Soy desarrollador web y tengo experiencia en el desarrollo de varias aplicaciones web en PHP. Tengo una idea de desarrollar un producto para mí y decidí usar un marco basado en MVC porque realmente me gusta la idea de MVC y cómo uno puede administrar y modificar fácilmente la aplicación sin ninguna dificultad.
Elegí Zend Framework y parece más difícil que aprender un nuevo lenguaje de programación. Hay tantas cosas que suceden al mismo tiempo incluso para ejecutar una pequeña aplicación.
Del mismo modo, la idea de enrutamiento es muy compleja, ya que es nueva para un programador central. Sé que los muchachos aquí leen miles de preguntas como la que estoy haciendo, pero no estoy buscando aprender Zend Framework de la noche a la mañana. Estoy dispuesto a dar todo el tiempo que necesite, pero hasta ahora no tiene sentido para mí. Hay miles de clases en la biblioteca Zend, pero ¿cómo sabría un novato dónde usar una clase específica y cómo usarla? Todavía me resulta muy difícil entender el arranque de Zend Framework y su mapeo. Leo el manual, lo sigo y las cosas comienzan a funcionar, pero realmente no sé exactamente cómo están sucediendo.
Tampoco tengo ni idea de cómo los modelos, las vistas y los controladores funcionan juntos y cómo planificar una aplicación en Zend Framework. Cuando se trata de php central, tengo exactamente la idea en mente de qué hacer y luego traducirlos fácilmente en código, pero en Zend Framework no sé cómo traducir mi idea.
fuente
Respuestas:
Zend Framework es difícil. No se construyó como un marco de nivel de entrada, se supone que el conocimiento de los conceptos involucrados 1 . Dicho esto, el primer requisito para Zend Framework 2.0 es hacerlo un poco más fácil:
Así que no eres solo tú, es difícil para todos: lee la página wiki completa, hay algunas cosas que se identifican como innecesariamente complejas. Pero incluso si se cumple el requisito anterior, aún no se convertirá en un marco de nivel de entrada, lo que significa que no es un marco en el que debería estar aprendiendo, sino uno que debería usar cuando realmente haya entendido los conceptos involucrados.
Como todavía está aprendiendo, sería mucho más valioso construir su propia arquitectura MVC. Rasmus Lerdorf notoria 2 " La no-marco framework PHP MVC " entrada en el blog da un ejemplo muy sencillo y limpio de MVC PHP a través de procedimiento, sin un marco u otra biblioteca de terceros involucrados.
Pero si realmente quieres aprender con un marco, debes considerar un micro marco en lugar de uno completo. Slim tiene una base de código muy pequeña, limpia y completamente probada y debería ser ideal para el aprendizaje. No he jugado con ningún otro micro marco, debes hacer tu propia investigación y decidir cuál es mejor para ti.
Y para una introducción rápida y sucia al enrutamiento, vea mi respuesta a esta pregunta . No es un concepto muy difícil de entender, pero Zend Framework lo hace parecer mucho más de lo que realmente es .
1 La mejor descripción que he leído para ZF es que es un marco de creación de marcos , no un marco de aplicaciones. Su potencia bruta y su extrema lista de características no son adecuadas para sitios web pequeños o medianos. Lamentablemente no puedo encontrar realmente donde leí eso.
2 Lea el descargo de responsabilidad en la parte superior de la publicación del blog.
Actualización, inspirada en el comentario de @ Karpie:
Se supone que un marco no es difícil, el objetivo de un marco es facilitar las cosas. Es posible que incluso con una comprensión firme de los conceptos involucrados, ZF no sea una buena opción para usted.
Hay muchos factores subjetivos involucrados al elegir un marco, y a menos que cualquier otro marco carezca de la funcionalidad que absolutamente necesita, y no puede escribir por su cuenta, debe evitar ZF y usar un marco que le parezca más natural.
Si conoce los conceptos, el marco no debería interferir.
fuente
No me gustó la falta de capacidad de descubrimiento cuando comencé a usar Zend Framework, demasiadas clases dependen de matrices y hay que buscar qué claves puede / necesita definir.
No hay nada de malo en tener métodos establecidos claros o parámetros con nombre, sería, en gran medida, ayudar a descubrir.
El marco Yii es aún peor con este tipo de cosas.
fuente
Algunos problemas con ZF, que hacen que sea molesto (y difícil para los principiantes) trabajar con ellos:
ORM no incluido . Uno podría pensar que esto debería ser la base del marco MVC moderno, sin embargo, solo viene con ZF
Zend_Db_Table
, que es ridículamente de bajo nivel. Puedes usar Doctrine, pero entonces estás solo, no está integrado de ninguna manera con ZF.Enrutadores de URL hinchables e ilegibles . Por ejemplo, se necesitan 9 líneas de código para definir el enrutamiento más simple:
Dada la cantidad de preguntas relacionadas con esto , es todo menos simple para la mayoría de las personas. Además, no puedo evitarlo y compararlo con Django, donde el equivalente de arriba sería
Zend_Acl
Es muy complicado para la mayoría de los casos de uso. Normalmente tendría autenticación para identificar al usuario. Y una opción para limitar fácilmente el acceso a algunos controladores solo a usuarios autenticados. Para muchos casos de usuarios eso es suficiente. Para casos más complicados, dependería de la lógica empresarial en el controlador determinar si el usuario tiene permisos para realizar ciertas acciones. En ZF no tiene la opción de limitar fácilmente el acceso solo a usuarios autenticados, la forma estándar es usar ACL y el sistema de roles, independientemente de cuán simple sea realmente su necesidad.Directorio hinchado y diseño de archivos . La estructura de directorio recomendada se ve así:
fuente
Zend Framework es como un montón de bibliotecas independientes que juntas funcionan como un marco. Es muy difícil desarrollar algo al mismo tiempo desacoplado y "fácil de usar". Por "fácil de usar" me refiero a hacer cosas complejas con pocas líneas de código.
Entonces, comenzar con Zend es más difícil que otros frameworks, como CakePHP. Pero también es más fácil extender y personalizar su aplicación sin códigos sucios. Zend también sigue estándares y patrones de diseño en todo su código, por lo que una vez que lea el código del marco, puede adivinar lo que está sucediendo.
Cuando diga que no tiene idea de cómo funcionan juntos los modelos, las vistas y los controladores, no culpe al marco. Implementa MVC como cualquier otro marco, excepto que separa el modelo de la estructura de la base de datos, que en muchos marcos se implementan en la misma clase. Entonces te enfrentarás a muchas clases como Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset, etc.
Es por eso que creo que Zend Framework es más complicado, porque está muy desacoplado y puedes usar sus clases en otros proyectos que no usan ZF.
fuente
Zend Framework requiere una base sólida en OOP y patrones de diseño. Según mi experiencia, solo encuentro programadores experimentados de Java-JEE-Struts-Spring que se familiarizan fácilmente con Zend Framework. El desarrollador promedio de PHP tiene dificultades para digerir los conceptos y la arquitectura detrás de Zend Framework. Pero mira hey! Zend Framework proviene de la compañía 'Zend' que crea PHP en primer lugar. Por lo tanto, necesita algo de reflexión, tal vez si no respeto.
fuente
Creo que zend es solo para complicar las cosas, MVC es solo un fraude, lógicamente funciona como PHP simple. pero lo está desarrollando frente a MVC, como separar archivos en diferentes directorios.
Recuerda que quien dice que Zend es muy seguro e incapaz de hackear es un gran tonto. Zend también puede piratear fácilmente si no usó protecciones de inyección Mysql. Me gustaría sugerirle que defina sus propias funciones, luego separe sus archivos en diferentes directorios para que sea similar, como MVC, guarde sus funciones, clases y otro material principal en un directorio llamado controlador y luego agregue sus páginas web en un directorio diferente donde lo necesite para incluir todos esos archivos de funciones que este directorio conocerá como vista. coloque sus archivos javascript y css en diferentes directorios que se conocerán como modelo.
Recuerde que, en este mundo, muchas personas siempre trabajan duro para hacer las cosas más complicadas, porque ellas mismas son complicadas de entender.
PHP es el lenguaje que has aprendido en el libro y de los maestros. Zend no es más que un marco, para complicar las cosas a sus clientes. así que cada vez que el cliente necesite alguna modificación, volverán a los desarrolladores reales y esos desarrolladores le cobrarán más dinero. Zend está protegido, todo es mentira, un solo error, como la codificación php simple, puede hacer que el sitio web sea pirateable.
fuente
Al menos, el "inicio rápido" debe ser más fácil para hacer un marco amigable ... si prefieres algo más difícil como algo mejor, entonces diría "ZF es el mejor marco PHP", de lo contrario NO. Descargué ZF-2 y lo probé (sinceramente, soy novato en ZF). Lo triste es que todavía no he encontrado una sólida "guía de inicio rápido" con un simple Project Skeleton en Internet. Todo lo que busco es una forma sencilla de incluir archivos de biblioteca y crear una carpeta de proyecto con funciones MVC. He usado Codeigniter, Cake php, Yii pero lo encontré bastante hostil. Sí, sé que Zend actualiza PHP, pero eso no significa que sea el mejor marco o lo que sea que digas.
fuente