¿Qué tan fácil es ampliar / modificar Zend Framework?

Recientemente comencé a construir la versión 2 de mi marco MVC personalizado de un año. Me ha funcionado muy bien en una serie de proyectos, pero definitivamente veo margen de mejora. Falta una funcionalidad importante como ACL, validación de formulario y almacenamiento en caché. Por mucho que me gustaría construir esas partes yo mismo, sé que, en realidad, no es una decisión inteligente. Entonces, comencé a buscar en Zend Framework 1.9. Realmente me gusta cómo su biblioteca de componentes está vagamente acoplada. Sin embargo, al mirar diferentes tutoriales, parece muy detallado. He visto algunas aplicaciones de muestra que podría duplicar usando menos código con mi propio marco. Como tal, me gustaría “redefinir” gran parte de ella para que sea más amigable para RAD. Entonces, antes de invertir mucho tiempo en profundizar en el marco, esperaba que alguien pudiera arrojar algo de luz sobre este tema para mí. Soy un codificador de corazón, y no tengo problemas para pasar horas y horas retocando y personalizando algo si tiene una base sólida (que espero que tenga ZF).

Debo señalar que estoy muy contento de ver que Doctrine se puede integrar con ZF.

Si ZF no es extensible fácilmente, ¿qué otros marcos son (que también tienen ACL, validación de formulario, almacenamiento en caché)? He estado mirando a Symfony, pero toda la configuración sobre la cosa de la Convención me molesta mucho.

Gracias por adelantado por cualquier contribución.

Editar
Para responder a la pregunta de tharkun, lo que quiero decir con “fácilmente extensible” es que puedo rodar mis propias clases (que pueden o no extender las clases de ZF) y empaquetarlas en el marco para que pueda construir fácilmente una base de código para mi propio proyectos.

Entre los populares frameworks de PHP ZF es seguramente el que se extiende más fácilmente, especialmente debido al acoplamiento débil.

Gracias por las aclaraciones.

Lo que usted describe es exactamente lo que ZF es bueno, pero yo diría que también es exactamente lo que OOP es bueno, por lo que consideraría un marco OO que no respalda este caso para el basurero.

De todos modos. Con ZF, normalmente se hace de forma que mantenga su propia biblioteca en una estructura paralela a la estructura de carpetas ZF. Puede usar el autocargador ZF y registrar su carpeta de biblioteca con el autocargador agregándolo al espacio de nombres. Ejemplo:

//this will be the only require needed for your whole application require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->registerNamespace('Mylibrary_'); 

En Mylibrary debes seguir las convenciones de nomenclatura de ZF. Digamos que quiere extender la clase Zend_Db_Table_Abstract. Esta clase se encuentra lógicamente bajo Zend / Db / Table / Abstract.php. Su biblioteca ahora debería replicar esa estructura: Mylibrary / Db / Table / Abstract.php. Y nombrarías tu clase en ese archivo:

 class Myproject_Db_Table_Abstract extends Zend_Db_Table_Abstract { /* now you're ready to extend and override as much as you like. and as a bonus you'll not even hav to include your library files since your library is registered with the loader */ } 

¿Tenías algo más en mente al hacer esta pregunta?

He desarrollado mi propio marco extendiendo ZF. Y puedo decirte que se puede hacer fácilmente. Puedes usar lo que quieras y reemplazar lo que no quieres con bastante facilidad. Full ZF sigue OOP al núcleo. Usan las mejores prácticas en todas partes. Aprendí mucho al observar su código.

Personalmente, creo que ZF es el mejor marco de php que he visto en mi vida.

Personalmente Zend FW es mi favorito. Patea el culo Período. Dicho eso, sin embargo, debes ser un codificador de corazón para poder apreciarlo. Puede ser bastante abstracto.

Para responder tu pregunta; Zend FW es muy ampliable, todo, realmente todo, puede ampliarse. La convención de nomenclatura de clase es; la clase Zend_This_IsAn_Example se encuentra en /library/Zend/This/IsAn/Example.php que extendería como Whatever_This_IsAn_Example que pondría en /library/Whatever/This/IsAn/Example.php También tiene carga automática que puede habilitar, por lo que no tendrá que requerir_unarchivo de clase nunca más.

estructura mvc;

/ application / application / controllers / application / etc / application / models / application / views / library / library / Zend / library / Custom / public

Consulte http://framework.zend.com/manual/en/introduction.html y http://framework.zend.com/docs/quickstart

No es perfecto. Ha habido una tendencia a usar miembros estáticos y dependencias de clase concretas en ZF, pero algunos de ellos se han solucionado en versiones posteriores del marco. Diría que, en comparación con otros marcos similares, a ZF le está yendo bien. De hecho, el acoplamiento flojo es probablemente el mayor punto de venta del marco.

casi no hay problema para extender el Zend Framework.

Es una práctica común configurar algún tipo de “myExtenions” que estén en coexistencia con Zend Framework Library. Como ejemplo puedes echar un vistazo a:

Extensión de Zym Zend Framework

El punto principal es que puedes codificar fácilmente la interfaz. ¿No está contento con la implementación de Zend_Acl_Resource? Crea tu propia clase de recursos implementando Zend_Acl_Resource_Interface 🙂