Dieser Artikel stellt hauptsächlich die Vorteile des Hinzufügens von Namespaces zu PHP vor, um das automatische Laden zu erleichtern. Jetzt kann ich ihn mit allen teilen, die ihn benötigen
A PHP-Projekt, normalerweise gibt es nur eine Eintragsdatei index.php. Wir schreiben normalerweise eine automatische Ladefunktion in diese Eintragsdatei, um Klassendateien zu erfordern, die in Zukunft instanziiert werden. Wie zum Beispiel:
spl_autoload_register(function ($className) { require 'class/' . $className . '.php';});通过以上的代码,我们发现:在自动加载时,我们需要指定存放类的文件夹,以便找到相应的类。那么问题产生了。在引入命名空间之前:
Unser Projektverzeichnis
index.php
Controller.php
In index.php müssen wir eine Controller-Klasse im Controller-Verzeichnis instanziieren und die model()-Methode dieses Objekts aufrufen, und diese Methode muss eine Modellklasse im Modellverzeichnis instanziieren . Lassen Sie uns index.php ausführen:
Warnung: require(controller/Model.php): failed to open stream: No such file or Verzeichnis
Es heißt, dass es keine solche Datei oder kein solches Verzeichnis gibt. Der Grund ist ganz einfach: Wenn PHP new Model() verwendet, wechselt es automatisch in das erforderliche Controller-Verzeichnis und kann daher nicht gefunden werden.
Wie sollte also unsere automatische Ladefunktion geschrieben werden, um das Problem zu lösen? Wenn Sie „controller/“ in „model/“ ändern oder das Verzeichnis nicht schreiben, wird es offensichtlich nicht richtig geladen. Daher ergeben sich die Vorteile der Verwendung von Namespaces.
引入命名空间之后:
index.php
Controller.php
Model.php
我们按照文件目录的结构来为每个类写入命名空间,当在一个类中需要实例化另外一个类时,IDE会帮我们写入use namespace ; 。这样,我们在写自动加载的时候,就不用考虑将要加载的类在哪一个文件目录下了,只需要这样写:
spl_autoload_register(function ($class) { require $class . '.php';});因为我们在index.php中use了所用到的类的命名空间,自动加载函数会到相应的命名空间中去寻找类(上述代码中的$class就相当于是'controller\Controller'),而这些类中又需要实例化其他的类,因为这些类中也声明了use 其他类的命名空间 ;,所以自动加载函数又会去相应的命名空间中去require其他类。这样,我们就不会为加载类而发愁了,极大地解放了我们的编程负担。
相关推荐:
Das obige ist der detaillierte Inhalt vonDer Vorteil des Hinzufügens eines Namespace zu PHP besteht darin, das automatische Laden zu erleichtern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!