Espacios de nombres en php 5.2
namespaces php-5.2 (5)
Los espacios de nombres están disponibles en PHP a partir de PHP 5.3.0.
Fuente: http://www.php.net/manual/en/language.namespaces.rationale.php
He hecho poca web usando espacios de nombres. Lo tengo en mi computadora y estoy a punto de moverlo a alojamiento gratuito que usa php 5.2. Sintaxis highlighter para php 5.2 los interpreta como errores.
¿Son los espacios de nombres compatibles con php 5.2?
Si no, ¿hay alguna forma de cómo usarlos con pequeños cambios en el código existente?
Acabo de encontrarme con este problema, he desarrollado un script de carga de imágenes y he añadido código de terceros para ayudar en el procesamiento de imágenes (recorte) pero usan espacios de nombres, funciona bien en mi máquina en desarrollo, pero cuando lo subí al servidor vivo recibí un Error de análisis.
Afortunadamente, mi host admite php 5.3 y 5.4, así que les pedí que lo cambiaran a 5.3, espero que eso solucione los problemas que tengo, simplemente eliminando los espacios de nombres que hacen que el script falle :(
Pablo
Los espacios de nombres no son compatibles antes de 5.3. Realmente no hay una manera de adaptarlos a ellos en 5.2 por desgracia.
Los espacios de nombres solo están disponibles a partir de 5.3
Al menos en el caso de las clases, puede usar la función class_exists
para verificar si una clase ya se ha definido con un nombre similar dentro del espacio de nombres global. Junto con la __autoload()
, puede crear un alias universal y hacer que el sistema compruebe las dos clases nombradas por el nombre original y el nombre con algún tipo de identificador adicional adjunto. Usaré "ns" como ejemplo.
function __autoload($class){
try{
require_once(''ns''.$class.''.php'');
}catch(Exception $e){
echo ''The class is unavailable in pseudo-namespace as well as global'';
}
}
Solo asegúrate de que la ruta requerida indique dónde guardas tus modelos. También podría usar una carpeta diferente en lugar del alias.
De esta forma, cualquier clase duplicada puede colocarse en archivos separados de la ejecución principal que solo se incluyen si no existen en el global. Aunque esto no resuelve estrictamente el problema de tener que cambiar el nombre de las clases físicamente, le permitirá colocar sus definiciones en diferentes directorios para fines de control de versiones, etc.
http://www.php.net/manual/en/language.namespaces.rationale.php
Los espacios de nombres están disponibles en PHP a partir de PHP 5.3.0.