¿Por qué Zend Framework es tan complicado?

42

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 se puede administrar y modificar la aplicación fácilmente sin ninguna dificultad.

Elegí Zend Framework y parece más difícil que aprender un nuevo lenguaje de programación. Hay tantas cosas que se ejecutan al mismo tiempo, incluso para ejecutar una pequeña aplicación.

De manera similar, la idea de enrutamiento es muy compleja, ya que es nueva para un programador central. Sé que los chicos de aquí leen miles de preguntas como la que estoy haciendo, pero no busco 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 noob dónde usar una clase específica y cómo usarla? Todavía me resulta muy difícil entender el bootstrap de Zend Framework y su mapeo. Leí el manual, lo sigo y las cosas empiezan a funcionar, pero realmente no sé exactamente cómo están sucediendo.

Todavía no tengo ni idea de cómo funcionan juntos los modelos, las vistas y los controladores y cómo planificar una aplicación en Zend Framework. Cuando se trata de core php, tengo exactamente la idea de qué hacer y de traducirlos fácilmente en código, pero en Zend Framework no sé cómo traducir mi idea.

    
pregunta Umair Abid 06.12.2011 - 06:26

7 respuestas

38

Zend Framework es difícil. No se construyó como un marco de nivel de entrada, se asume 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:

  

Alivia la curva de aprendizaje

     

A finales de 2009, hicimos una encuesta a los usuarios del marco para determinar qué usan,   Qué entornos utilizan y cuáles son sus necesidades. El principal problema, sin excepción,   Fue la dificultad de aprender el marco. Algunos de estos problemas incluyen:

     
  • Dificultad en la "primera hora" con el marco.
  •   
  • Incertidumbre sobre los "próximos pasos" después del inicio rápido.
  •   
  • API incoherentes en el propio código fuente. Un componente puede usar "complementos", otro "ayudante" y otro "filtro".
  •   
  • Incertidumbre sobre dónde existen los puntos de extensión y cómo programar para ellos.
  •   
  • Confusión sobre si pueden usar Zend Framework solo como una pila MVC o como componentes individuales.
  •   

Entonces, no solo eres tú, es difícil para todos: lee la página wiki completa, hay muchas cosas que se identifican como innecesariamente complejas. Pero incluso si se cumple con 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 que debe estar usando cuando realmente haya entendido los conceptos involucrados. / p>

Ya que aún estás aprendiendo, sería mucho más valioso construir tu propia arquitectura MVC. Notorious 2 " The no-framework PHP MVC framework " blog post da un ejemplo muy simple y limpio de MVC a través de PHP de procedimientos, sin ningún framework u otra biblioteca de terceros involucrada.

Pero si realmente desea aprender con un marco, debe considerar un micro framework 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, consulte mi respuesta a esta pregunta . No es un concepto muy difícil de entender, pero Zend Framework hace que parezca mucho más que eso en realidad es .

1 La mejor descripción que he leído para ZF es que es un framework de construcción de framework , no un framework de aplicación. Su potencia pura y la lista extrema de funciones no son adecuadas para sitios web pequeños o medianos. Desafortunadamente, no puedo encontrar realmente donde leí eso.

2 Lea la cláusula de exención 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 necesita absolutamente, y no pueda 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 estar entrometiéndose.

    
respondido por el yannis 06.12.2011 - 06:57
11

No me gustó la falta de capacidad de detección cuando comencé a usar Zend Framework, demasiadas clases dependen de los arreglos y tienes que buscar qué claves puedes / necesitas definir.

No hay nada de malo en tener métodos de conjuntos claros o parámetros con nombre, sería una gran ayuda para ayudar a la detección.

El marco Yii es aún peor con este tipo de cosas.

    
respondido por el G3D 06.12.2011 - 15:37
5

Algunos problemas con ZF, que hacen que sea molesto (y difícil para los principiantes) trabajar con:

ORM no incluido . Uno podría pensar que esto debería ser una base muy moderna del marco MVC moderno, pero ZF solo viene con Zend_Db_Table , que es ridículamente de bajo nivel. Puedes usar Doctrine, pero luego estás solo, no está integrado de ninguna manera con ZF.

Enrutadores de URL inflados e ilegibles . Por ejemplo, se necesitan 9 líneas de código para definir el enrutamiento más simple:

$route = new Zend_Controller_Router_Route(
    'archive/:year',
    array(
        'controller' => 'archive',
        'action'     => 'show'
    ),
    array('year' => '\d+')
);
$router->addRoute('archive', $route);

Dada la cantidad de preguntas relacionadas con esto no es nada simple para la mayoría de las personas. Además, no puedo evitarlo y compararlo con Django, donde el equivalente de arriba sería

url(r'^archive/(?P<year>\d+)/$', 'archive.show')

Zend_Acl es una forma complicada para la mayoría de los casos de uso. Normalmente tendrías 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 usuarios caso es suficiente. Para un caso más complicado, dependería de la lógica empresarial del 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 lo simple que realmente sea su necesidad.

Directorio hinchado y diseño de archivos . estructura de directorio recomendada tiene este aspecto:

<project name>/
    application/
        configs/
            application.ini
        controllers/
            helpers/
        forms/
        layouts/
            filters/
            helpers/
            scripts/
        models/
        modules/
        services/
        views/
            filters/
            helpers/
            scripts/
        Bootstrap.php
    data/
        cache/
        indexes/
        locales/
        logs/
        sessions/
        uploads/
    docs/
    library/
    public/
        css/
        images/
        js/
        .htaccess
        index.php
    scripts/
        jobs/
        build/
    temp/
    tests/
    
respondido por el vartec 29.04.2013 - 17:44
4

Zend Framework es como un grupo de bibliotecas independientes que, en conjunto, funcionan como un marco. Es muy difícil desarrollar algo al mismo tiempo, desacoplado y "fácil de usar". Para "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 ampliar y personalizar su aplicación sin códigos sucios. Zend también sigue los estándares y patrones de diseño en todo su código, así que una vez que lea el código del marco, podrá adivinar lo que está pasando.

Cuando digas que no tienes idea de cómo funcionan juntos los modelos, las vistas y los controladores, no culpes 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 implementa en la misma clase. Así que te enfrentarás a muchas clases como Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset, etc ...

Por eso creo que Zend Framework es más complicado, porque está muy desacoplado y puedes usar sus clases en otros proyectos que no usan ZF.

    
respondido por el gustavotkg 06.12.2011 - 22:04
3

Zend Framework requiere una base sólida en OOP y patrones de diseño. Desde mi experiencia, solo encuentro programadores Java-JEE-Struts-Spring con experiencia que fácilmente se familiarizan con Zend Framework. El desarrollador PHP promedio encuentra difícil 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. Así que hay que pensar un poco, tal vez si no respeto!

    
respondido por el Rohit 27.02.2012 - 20:15
-2

Creo que zend es solo para complicar las cosas, MVC es solo un fraude, lógicamente, está funcionando como un simple PHP. pero lo estás 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 hackear fácilmente si no usó las protecciones de inyección Mysql. Me gustaría sugerirte que definas tus propias funciones, luego separe sus archivos en directorios diferentes para que sean similares a MVC guarde sus funciones, clases y otro material central en un directorio llamado controlador luego agregue sus páginas web en un directorio diferente donde necesite incluir todos los archivos de funciones que este directorio conocerá como vista. coloque sus archivos javascript y css en directorios diferentes que se conocerán como modelo.

Recuerda que, en este mundo, muchas de las personas siempre trabajan duro para hacer las cosas más complicadas, ya que ellas mismas son complicadas de entender.

PHP es el idioma que has aprendido en el libro y de los profesores. Zend no es nada más que un marco, para complicar las cosas a sus clientes. así que siempre que el cliente necesite alguna modificación, volverá a los desarrolladores reales y esos desarrolladores le cobrarán más dinero. Zend está protegido, todo es mentira, un solo error como la simple codificación de PHP puede hacer que el sitio web sea hackeable.

    
respondido por el Pooja dhimbani 29.04.2013 - 13:54
-6

Al menos la cosa de "inicio rápido" debe ser más fácil para hacer un marco amigable ... si prefiere algo más difícil como algo mejor, entonces diría que "ZF es el mejor marco PHP", de lo contrario NO . Descargué ZF-2 y lo probé (honestamente soy un novato en ZF). Lo triste es que todavía no he encontrado una "guía de inicio rápido" sólida 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 características MVC. He usado Codeigniter, Cake php, Yii pero lo encontré bastante hostil. Sí, ya sé que Zend actualiza PHP, pero eso no significa que sea el mejor marco o lo que sea que digas.

    
respondido por el Ram 10.10.2012 - 14:27

Lea otras preguntas en las etiquetas

Comentarios Recientes

Bueno, ¿por qué debería importarle Zend Framework? Para muchos programadores de hoy, cada una de estas construcciones JVM es relativamente sutil, tiene una intención simple y predecible, y es posible reutilizar en cualquier lugar. Sin embargo, los IDE y las herramientas para crear aplicaciones rara vez colocan los objetos resultantes en los módulos apropiados, comozend.jscool.js $ http.jsfancy.js Lea este blog para obtener detalles sobre la implementación alternativa de estos objetos. Como se puede imaginar, desarrollar... Lee mas