Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/03/2006, 12:42
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
PHP5: Diseño en 3 capas y problemas con subdirectorios

Conceptualmente, si separo en 3 capas un sistema, debo colocar cada capa en un subdirectorio.

En tecnologías como .Net o Java, cuando se crea un "paquete", se hace referencias por código al mismo paquete, tanto para definir una clase como parte del paquete, como para usar parte del contenido del paquete (no tienes que hacer referencias a la ubicación física de los archivos).

En la beta de PHP5 se hablaba de "namespace", idem a la sintaxis de .Net para los "paquetes", pero en la versión final se eliminó porque no estaba pronto (se presume que en la versión 6 aparecerá implementado).

¿A donde voy con todo esto? A un problema de manejo de directorios

Mi pregunta es: ¿como manejar de forma limpia (hasta que esto no este solucionado por lenguaje) las llamadas a contenidos entre subdirectorios, como si de paquetes estuviéramos hablando?

Cuando digo "limpia", quiero decir, no hacer referencias del tipo "absoluta", donde todo nuestro sistema quedará "hardcode" a los directorios, o las "relativas" pero que tendrán problemas cada vez que son invocadas de lugares distintos.

Una solución que he llegado a hacer (sin hacer un "sitio modular") es que exista un archivo configuración.php con referencias a todos los subdirectorios del sistema en variables de sesión, y estas son usadas por todo el sistema. El problema es que siempre hay que incluir este archivo y de forma "absoluta" (el gran dilema del "huevo o la gallina").

Otra solución teórica que veo a esto es crear variables de ambientes (tal vez del lado del servidor) que contengan todas estas referencias y que cuando se ejecutan las aplicaciones no necesiten incluir ningún otro fuente, solo hacer referencia a las variables (una mejora del caso anterior).

Lo lamentable de todo esto, es que en la versión 6 este tipo de problemas debería estar resuelto con el uso de "namespace".

¿Cual es vuestra experiencia? ¿consejos? ¿ideas? ¿cómo han resuelto este tipo de problemas?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com