Cita:
Iniciado por pateketrueke No, eso no está definido en dicho estańdar,
Cita: Each namespace separator is converted to a DIRECTORY_SEPARATOR when loading from the file system.
Si el path de mi fichero es Backoffice/objects/Almacen/objects/private/Caja, su namespace debería ser ese.
Y que el path del fichero sea ese, no es casual.Backoffice tiene más cosas que objetos (configuraciones, caches,etc).Almacen tiene más cosas que objetos (vistas, controladores, datasources,generadores,etc).
Mi código es mucho más legible escribiendo Backoffice\Almacen\Caja. El hacer que los namespaces coincidan con los paths no siempre ayuda.
Cita:
Iniciado por pateketrueke Al caso debo mencionar que todavía no he visto un ejemplo complejo de dependencias (de clases obviamente) que no se pueda resolver usando PSR-0 (autoload), si tienes alguno sería interesante revisarlo.
En general, cualquier sistema basado en "plugins".
En particular, un sistema donde quieras, por ejemplo, que un usuario pueda sobreescribir un controlador (el ejemplo que daba antes de prestashop).
Una forma sencilla de hacerlo:
Controlador base:
Código PHP:
Ver originalnamespace base\Controllers;
class MyController
{
function a(){ echo "BASE";}
}
Controlador sobreescrito por el usuario:
Código PHP:
Ver originalnamespace user\Controllers;
class MyController extends \base\Controllers;
{
function a(){ echo "USER"; }
}
Instanciación del controlador:
Código PHP:
Ver original$controller=new \run\MyController();
No existe ninguna clase "run\MyController", ni directorio "run".Pero, examinando el namespace pedido, el autoloader puede comprobar si existe user\MyController, y si no, devolver base\MyController.
Variaciones de este caso de uso existe en casi cualquier "aplicación prefabricada".