PHP-Namespaces automatisch laden
Bei der Verwendung von PHP-Namespaces und dem automatischen Laden kann die Fehlermeldung „Klasse nicht gefunden“ auftreten. Dieses Problem tritt auf, wenn die Klasse, auf die verwiesen wird, nicht im globalen Bereich liegt.
Problem:
In Ihrem Beispielcode wird der Fehler „Klasse ‚Klasse1‘ nicht gefunden“ angezeigt. tritt auf, weil die Klasse Class1 innerhalb des Namespace PersonBarnesDavid definiert ist. Die use-Anweisung in test.php importiert jedoch nur den Namespace-Alias „MyPerson“, gibt jedoch nicht den spezifischen Namespace-Speicherort der Klasse Class1 an.
Lösung:
Um dieses Problem zu beheben, müssen Sie Ihre __autoload-Funktion ändern, um Klassen zu laden, die sich nicht im globalen Bereich befinden. Hier sind zwei Ansätze:
Mit Alias:
<code class="php">function __autoload($class) { // Adapt this depending on your directory structure $parts = explode('\', $class); require end($parts) . '.php'; } use Person\Barnes\David as MyPerson; $class = new MyPerson\Class1();</code>
Dieser Ansatz verwendet einen Alias, „MyPerson“, um auf den Namespace PersonBarnesDavid zu verweisen und erfordert die richtige Klasse1 Datei explizit.
Ohne Alias:
<code class="php">use Person\Barnes\David\Class1; $class = new Class1();</code>
Dieser Ansatz importiert die Klasse Class1 direkt aus ihrem vollständigen Namensraum, ohne einen Alias zu verwenden.
Durch die Implementierung einer dieser Lösungen können Sie sicherstellen, dass Ihr Autoloader in Namespaces definierte PHP-Klassen ordnungsgemäß lädt, wodurch der Fehler „Klasse nicht gefunden“ behoben wird.
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Klasse nicht gefunden' beim automatischen Laden von PHP-Namespaces?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!