Pregunta

Conozco la estructura de directorios predeterminada para las aplicaciones modulares de Zend Framework que se encuentra en el manual.

/application
  /controllers
  /modules
    /admin
      /controllers
      /views
  /views
  /configs
/www
  index.php

Pero me pregunto por qué debería hacerlo de esta manera. Realmente es suficiente tener el módulo predeterminado en / application y otros módulos en / application / modules /: moduleName . Esta es más una pregunta de discusión que una pregunta help-me .

¿Cuáles son las ventajas y desventajas de tener una estructura de directorios como esta?

/application
  /modules
    /admin
      /controllers
      /views
    /default
      /controllers
      /views
  /configs
/www
  index.php

Desde mi punto de vista, la única desventaja es que no está escrito así en el manual predeterminado /. No puedo ver a ningún otro. ¿Me estoy perdiendo de algo?

Aún más: creo que esta estructura debería ser la estructura predeterminada para cualquier nueva aplicación ZF. Y me pregunto por qué los desarrolladores de Zend no lo usan.

¿Fue útil?

Solución

En realidad, la estructura de directorios propuesta es más que apropiada para aplicaciones grandes y complejas.

Magento, que es la mejor solución de comercio electrónico de código abierto del mundo en la actualidad, se ha codificado en el marco Zend y utiliza un diseño de directorio similar al que usted propone, de esta manera es muy fácil ampliar y agregar nuevos módulos y administrar los antiguos.

Nuevamente para aplicaciones simples y para aprender Zend, sugeriría que todos se apeguen a la estructura de directorios predeterminada.

Otros consejos

Supongo que de esta manera es porque:

  • hay una estructura predeterminada, que se utiliza cuando no hay ningún módulo en una aplicación (es decir, solo un módulo predeterminado, lo que significa que no es necesario un directorio "predeterminado")
  • y, luego, puede agregar módulos; sin tener que modificar la estructura existente.

Supongo que es una explicación tan buena como cualquier otra.


Aún así, si desarrolla una aplicación que contendrá varios módulos, y sabiendo esto desde el principio, probablemente iría con el tipo de estructura que está proponiendo, y no el predeterminado ^^

Las cosas serían más claras de esa manera, en mi opinión, ¡y no veo ningún problema con eso!

(De hecho, lo he hecho una vez, hace bastante tiempo, y no he encontrado ningún problema, pero esta no era una aplicación completa, más un prototipo ...)

En realidad, esa es una de las opciones detalladas en http: // framework.zend.com/manual/en/zend.controller.modular.html

Tu manera suena bien y el objetivo de ZF es que puedes elegir cómo manejar las cosas tú mismo. Una ventaja es un poco menos de código. En el enfoque predeterminado de Zend, necesitaría usar esto:

$front = Zend_Controller_Front::getInstance();
$front->addControllerDirectory('/path/to/application/controllers', 'default');
$front->addModuleDirectory('/path/to/application/modules');

Mientras que en el enfoque que describe:

$front = Zend_Controller_Front::getInstance();
$front->addModuleDirectory('/path/to/application/modules');

Es todo lo que necesitas.

Una ventaja del enfoque de Zend es que si no necesita módulos, entonces no es necesario ejecutar el método addModuleDirectory (). Con su enfoque, esto siempre necesitaría ejecutarse, creando potencialmente una pequeña sobrecarga.

Esta página http://framework.zend.com/manual /en/project-structure.project.html indica que tener el directorio de controladores predeterminado " dentro del directorio de la aplicación proporciona el mejor diseño para comenzar un proyecto simple, así como para iniciar un proyecto modular que tenga controladores / modelos / vistas globales . "

Creo que el punto de vista de Zend es que esto funciona tanto para sitios simples con solo un módulo predeterminado como para sitios más complejos con múltiples módulos. No es difícil resolver más módulos en el directorio modules /. Pero al final del día, es una preferencia personal.

Estoy luchando con el mismo problema. Pero no estoy logrando configurar esto correctamente ... Por qué quiero usar esto es porque la estructura modular, combinada con Zen_Application, crea una instancia de Module_Bootstrapper que registra los espacios de nombres en / application / module / name / forms (y controladores, vistas, modelos, etc.) automáticamente.

El único problema que tengo es deshacerme del módulo 'predeterminado': S

puede encontrar el tema en los foros de Zend aquí: http: / /forums.zend.com/viewtopic.php?f=69&t=2394&start=0

Espero que reciba respuesta, o lo publicaré aquí.

Puede encontrar la arquitectura deseada aquí: http://www.osebboy.com / blog / zend-framework-modules /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top