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

WBOY
Freigeben: 2023-03-02 14:02:01
Original
3416 Leute haben es durchsucht

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

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

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren

Richtig:

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage