Une nouvelle fonctionnalité importante de PHP 5.3 concerne les espaces de noms.
Cette fonctionnalité a été proposée dans PHP5.0x, mais a ensuite été annulée et devrait être implémentée dans PHP6. Et cette fois, PHP5.3 est à nouveau sorti "plus tôt que prévu", ce qui montre que les développeurs y attachent une grande importance et sont prudents.
Une fois officiellement publié, le contenu du document peut être obsolète (la documentation peut être obsolète), voici donc une brève explication de l'utilisation de l'espace de noms : tout d'abord, déclarez un espace de noms et ajoutez le nouvel espace de noms de mot-clé, qui devrait être à le début du fichier de classe
<?phpnamespace Project::Module;class User {const STATUS_OK = true;function register($data) {...}...} Ensuite, dans le contrôleur (peut-être d'autres fichiers), vous pouvez appeler
$ user = new comme ça Project::Module::User();$user->register($register_info); c'est bien le même que d'habitude, mais on peut connecter deux classes indépendantes. Par exemple,
Project::Module::User;Project::Module::Blog; Cela facilite la description et la compréhension de la relation entre les variables et les classes à partir du langage lui-même, évitant ainsi la longue méthode de dénomination « traditionnelle » de Project_Module_Blog .
La description ci-dessus peut être difficile à expliquer les avantages de l'utilisation des espaces de noms. L'utilisation nouvellement ajoutée en tant que mots-clés peut mieux expliquer le problème. Les instructions use et as peuvent référencer et déclarer des « alias » d’espace de noms. Par exemple, le code pour instancier la classe dans le contrôleur ci-dessus peut être écrit comme ceci :
use Project::Module;$user = new Module::User();$user->register($register_info); ou même
use Project; ::Module:: Utilisateur en tant que ModuleUser;$user = new ModuleUser;$user->register($register_info);Les constantes de la classe sont également accessibles via l'espace de noms. Par exemple, STATUS_OK dans la classe ci-dessus est accessible via le. espace de noms
Project::Module::User: :STATUS_OK accès. De plus, vous pouvez également utiliser des alias pour simplifier ces longs "noms de variables".
Utilisez Project::Module::User::STATUS_OK comme STATUS_OK;echo STATUS_OK; À propos, le concept de "L'espace de noms global". Ce qu'on appelle « hyperespace » fait référence à des variables, des classes et des fonctions qui n'ont pas d'espace de noms désigné. Par exemple
, une fonction comme function foo() {...} peut être exécutée en utilisant foo() ou ::foo();.
Enfin, utilisez la fonction autoload pour charger la classe dans l'espace de noms spécifié. La fonction simple est la suivante
function __autoload( $classname ) {$classname = strtolower( $classname );$classname = str_replace( '::', DIRECTORY_SEPARATOR, $classname );require_once( dirname( __FILE__ ) . '/' . $ classname . '.class.php' );} De cette façon, par exemple, appeler
__autoload('Project::Module::User');