Eine wichtige neue Funktion in PHP 5.3 sind Namespaces.
Diese Funktion wurde in PHP5.0x vorgeschlagen, später jedoch eingestellt und die Implementierung in PHP6 geplant. Und dieses Mal wurde PHP5.3 erneut „vor dem Zeitplan“ veröffentlicht, was zeigt, dass Entwickler großen Wert darauf legen und vorsichtig sind.
Bei der offiziellen Veröffentlichung ist der Inhalt des Dokuments möglicherweise veraltet (die Dokumentation ist möglicherweise veraltet). Hier finden Sie daher eine kurze Erläuterung der Verwendung des Namespace: Deklarieren Sie zunächst einen Namespace und fügen Sie das neue Schlüsselwort Namespace hinzu, das unter sein sollte der Anfang der Klassendatei
<?phpnamespace Project::Module;class User {const STATUS_OK = true;function register($data) {...}...} Dann können Sie im Controller (vielleicht anderen Dateien)
$
aufrufenuser = new wie folgt: Project::Module::User();$user->register($register_info); ist zwar das gleiche wie üblich, aber wir können zwei unabhängige Klassen verbinden. Beispiel:
Project::Module::User;Project::Module::Blog; Dies erleichtert die Beschreibung und das Verständnis der Beziehung zwischen Variablen und Klassen aus der Sprache selbst und vermeidet so die „traditionelle“ langwierige Benennungsmethode von Project_Module_Blog .
Die obige Beschreibung kann schwierig sein, die Vorteile der Verwendung von Namespaces zu erklären. Die neu hinzugefügten Schlüsselwörter „use“ und „as“ erklären das Problem möglicherweise besser. Die use- und as-Anweisungen können Namespace-Aliase referenzieren und deklarieren. Der Code zum Instanziieren der Klasse im obigen Controller kann beispielsweise wie folgt geschrieben werden:
use Project::Module;$user = new Module::User();$user->register($register_info); oder sogar
project ::Module:: User as ModuleUser;$user = new ModuleUser;$user->register($register_info);Konstanten in der Klasse können auch über den Namespace aufgerufen werden. Beispielsweise kann auf STATUS_OK in der obigen Klasse über zugegriffen werden Namespace
Project::Module::User: :STATUS_OK Zugriff. Darüber hinaus können Sie auch Aliase verwenden, um solche langen „Variablennamen“ zu vereinfachen.
Verwenden Sie Project::Module::User::STATUS_OK als STATUS_OK;echo STATUS_OK; Der sogenannte „Hyperspace“ bezieht sich auf Variablen, Klassen und Funktionen, die keinen festgelegten Namensraum haben. Beispielsweise
kann eine Funktion wie function foo() {...} mit foo() oder ::foo(); ausgeführt werden.
Verwenden Sie abschließend die Autoload-Funktion, um die Klasse im angegebenen Namespace zu laden. Die einfache Funktion lautet wie folgt:
function __autoload( $classname ) {$classname = strtolower( $classname );$classname = str_replace( '::', DIRECTORY_SEPARATOR, $classname );require_once( dirname( __FILE__ ) . '/' . $ Klassenname . '.class.php' );} Auf diese Weise kann beispielsweise der Aufruf von
__autoload('Project::Module::User'); die Datei Project_Module_User.class.php automatisch laden (obwohl dies unpraktisch erscheint).