Una nueva característica importante en PHP 5.3 son los espacios de nombres.
Esta característica se propuso en PHP5.0x, pero luego fue cancelada y programada para implementarse en PHP6. Y esta vez, PHP5.3 se lanzó nuevamente "antes de lo previsto", lo que demuestra que los desarrolladores le dan gran importancia y son cautelosos.
Cuando se publique oficialmente, el contenido del documento puede estar desactualizado (la documentación puede estar desactualizada), por lo que aquí hay una breve explicación del uso del espacio de nombres: primero, declare un espacio de nombres y agregue el nuevo espacio de nombres de palabras clave, que debe estar en el comienzo del archivo de clase
<?phpnamespace Proyecto::Module;clase Usuario {const STATUS_OK = true;función registro($datos) {...}....} Luego, en el controlador (tal vez otros archivos) puede llamar
a $ usuario = nuevo así Project::Module::User();$user->register($register_info); de hecho es el mismo de siempre, pero podemos conectar dos clases independientes. Por ejemplo,
Project::Module::User;Project::Module::Blog; Esto hace que sea más fácil describir y comprender la relación entre variables y clases desde el propio lenguaje, evitando así el largo método de denominación "tradicional" de Project_Module_Blog .
La descripción anterior puede resultar difícil de explicar los beneficios del uso de espacios de nombres. El uso recién agregado y las palabras clave pueden explicar mejor el problema. Las declaraciones use y as pueden hacer referencia y declarar "alias" de espacios de nombres. Por ejemplo, el código para crear una instancia de la clase en el controlador anterior se puede escribir así:
use Project::Module;$user = new Module::User(
);$user->register($register_info);
::Module:: Usuario como ModuleUser;$user = new ModuleUser;$user->register($register_info);También se puede acceder a las constantes de la clase a través del espacio de nombres. Por ejemplo, se puede acceder a STATUS_OK en la clase anterior a través de. espacio de nombres
Proyecto::Módulo::Usuario: :STATUS_OK acceso. Además, también puede utilizar alias para simplificar estos "nombres de variables" largos
: use Project::Module::User::STATUS_OK as STATUS_OK;echo STATUS_OK; Por cierto, el concepto de "El espacio de nombres global". El llamado "hiperespacio" se refiere a variables, clases y funciones que no tienen un espacio de nombres designado. Por ejemplo
, una función como function foo() {...} se puede ejecutar usando foo() o ::foo();.
Finalmente, use la función de carga automática para cargar la clase en el espacio de nombres especificado. La función simple es la siguiente
function __autoload( $classname ) {$classname = strtolower( $classname );$classname = str_replace( '::', DIRECTORY_SEPARATOR, $classname );require_once( dirname( __FILE__ ) . '/' . $ classname . '.class.php' );} De esta manera, por ejemplo, llamar
a __autoload('Project::Module::User'); puede cargar automáticamente el archivo Project_Module_User.class.php (aunque esto parece inconveniente).