Bueno para explicar como implementar algo asi es como crear un microframework, con lo basico:
- Archivo de Configuracion
- Archivo de Booteo (o Archivo de inicializacion)
- Directorios de Busqueda Predefinidos
- Directorios de Presentacion Predefinidos
- Script de Router para saber que clase cargar dependiendo del URL (patron MVC)
Lo que haces es que tu archivo de Booteo, cada que recibe un request, carga la configuracion, activa el router/dispatcher, lee el URL y activa el controlador y accion correspondientes.
Ya con esto tu controlador ya tiene a su disposicion el archivo de configuracion disponible, asi como en que directorio esta y es posible "importar" ahora si los paquetes que ese controlador va a trabajar.
Un layout posible de directorios seria:
Código:
/www/aplicacion/
..../index.php // Archivo de Booteo
..../configuracion/configuracion.php // Archivo de Configuracion
..../controladores/ // Directorio de los controladores
..../vistas/ // Directorio con las vistas
..../aplicacion/ // Directorio con la aplicacion es aqui donde esta el "core"
..../aplicacion/com/empresa/ // Directorio base cuando se importa com.empresa.algo
..../aplicacion/com/empresa/subdirectorio/ // Subdirectorio para mostrar como se puede leer de cualquier subdirectorio
Una vez definido creamos nuestra funcion de import:
Código PHP:
import( $class_path ) {
$class_path = str_replace( ".", DIRECTORY_SEPARATOR, $class_path );
$class_path = BASE_DIR . "/aplicacion/" . $class_path; // BASE_DIR puede estar definida en la configuracion.
require( $class_path ".php" );
}
Espero que sea claro jeje