So laden Sie PHP-Klassen automatisch mit Namespaces
Problemerklärung:
Versuch, Namespaces zu verwenden mit Autoloading kann zu folgendem Fehler führen:
<code class="php">Fatal error: Class 'Class1' not found in /usr/local/www/apache22/data/public/php5.3/test.php on line 10</code>
Lösung:
Stellen Sie sicher, dass in Namespaces definierte Klassen nicht im globalen Bereich deklariert sind. Verwenden Sie einen Autoloader, um Klassendefinitionen dynamisch basierend auf ihrem Namespace und ihren Klassennamen zu laden.
Aktualisierter Code:
<code class="php">// Class1.php namespace Person\Barnes\David; class Class1 { public function __construct() { echo __CLASS__; } } // test.php spl_autoload_register(function ($class) { $parts = explode('\', $class); require end($parts) . '.php'; }); use Person\Barnes\David as MyPerson; $class = new MyPerson\Class1();</code>
Erklärung:
Im aktualisierten Code verwenden wir spl_autoload_register(), um Klassen automatisch zu laden. Die Autoloader-Funktion zerlegt den Klassennamen in seine Namespace-Komponenten und lädt die entsprechende Datei mit der Klassendefinition.
Hinweis:
Das obige ist der detaillierte Inhalt vonWie behebt man Klassenladefehler bei der Verwendung von PHP-Namespaces mit Autoloading?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!