Heim >Backend-Entwicklung >PHP-Tutorial >Warum schlägt das Hinzufügen des automatischen Ladens von Composer zu ThinkPHP fehl?
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.
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.
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: