Heim >Backend-Entwicklung >PHP-Tutorial >Warum schlägt das Hinzufügen des automatischen Ladens von Composer zu ThinkPHP fehl?

Warum schlägt das Hinzufügen des automatischen Ladens von Composer zu ThinkPHP fehl?

WBOY
WBOYOriginal
2016-12-01 01:27:543467Durchsuche

Ich habe Folgendes zu ThinkPHP von index.php hinzugefügt:

<code>// 添加第三方库自动加载
require './vendor/autoload.php';</code>

Bei der Verwendung wird jedoch 类不存在 angezeigt.

Aber das Hinzufügen von Controller zu require kann verwendet werden.

<code>require APP_PATH.'../vendor/autoload.php'; </code>

Was verursacht es? Kann es nur einen Klassenlader geben? ThinkPHP hat auch eines geschrieben, was dazu führte, dass es den Klassenlader von Composer überschrieb?

Weiß es jemand? Vielen Dank euch allen.

Ich habe in dieser Frage gesehen, dass es einen Befragten gab, der sagte, dass es im englischen Dokument stehe.

spl_autoload_register kann Situationen bewältigen, in denen mehrere Lader erforderlich sind. In diesem Fall ruft spl_autoload_register zuvor registrierte Lader der Reihe nach auf. Im Gegensatz dazu kann __autoload nur einmal definiert werden, da es sich um eine Funktion handelt.

Es sollten mehrere vorhanden sein.

Antwortinhalt:

Ich habe Folgendes zu ThinkPHP von index.php hinzugefügt:

<code>// 添加第三方库自动加载
require './vendor/autoload.php';</code>

Bei der Verwendung wird jedoch 类不存在 angezeigt.

Aber das Hinzufügen von Controller zu require kann verwendet werden.

<code>require APP_PATH.'../vendor/autoload.php'; </code>

Was verursacht es? Kann es nur einen Klassenlader geben? ThinkPHP hat auch eines geschrieben, was dazu führte, dass es den Klassenlader von Composer überschrieb?

Weiß es jemand? Vielen Dank euch allen.

Ich habe in dieser Frage gesehen, dass es einen Befragten gab, der sagte, dass es im englischen Dokument stehe.

spl_autoload_register kann Situationen bewältigen, in denen mehrere Lader erforderlich sind. In diesem Fall ruft spl_autoload_register zuvor registrierte Lader der Reihe nach auf. Im Gegensatz dazu kann __autoload nur einmal definiert werden, da es sich um eine Funktion handelt.

Es sollten mehrere vorhanden sein.

5.0版本支持Composer安装的类库的自动加载,你可以直接按照Composer依赖库中的命名空间直接调用。

Das bedeutet, dass thinkphp den automatischen Lademechanismus von Composer integriert hat. Sie müssen Composer nur zum Herunterladen der abhängigen Klassenbibliothek verwenden. Nach dem Herunterladen müssen Sie den Namespace nicht selbst require APP_PATH.'../vendor/autoload.php'; importieren.

Warum schlägt das Hinzufügen des automatischen Ladens von Composer zu ThinkPHP fehl?

Poof, ich weiß, was es verursacht hat ... Bevor require in ThinkPHP.php war, nachdem es eingeführt wurde, tatsächlich zum Zeitpunkt von require './ThinkPHP/ThinkPHP.php';, hatte es bereits im Kerncode von , und es ist vorbei. Die Route wurde eingegeben 执行ThinkPHP...Controller

Falsch:

<code>// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';

// 添加第三方库自动加载
require './vendor/autoload.php';</code>

Richtig:

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-Socket-ProblemNächster Artikel:PHP-Socket-Problem