Pourquoi Zend Framework est-il si compliqué?

42

Je suis développeur Web et possède une expérience de développement de plusieurs applications Web en PHP. J'ai une idée de développer un produit pour moi-même et j'ai décidé d'utiliser un framework basé sur MVC parce que j'aime beaucoup l'idée de MVC et comment on peut facilement gérer et modifier l'application sans aucune difficulté.

J'ai choisi Zend Framework et cela semble plus difficile que d'apprendre un nouveau langage de programmation. Il y a tellement de choses qui se passent en même temps, même pour exécuter une petite application.

De même, l’idée de routage est très complexe car elle est nouvelle pour un programmeur principal. Je sais que les gars ici lisent des milliers de questions comme celle que je pose, mais je ne cherche pas à apprendre Zend Framework du jour au lendemain. Je suis prêt à donner tout le temps dont il a besoin, mais jusqu'à présent, cela n'a aucun sens pour moi. Il y a des milliers de classes dans la bibliothèque Zend, mais comment un noob saurait-il où utiliser une classe spécifique et comment l'utiliser? Je trouve toujours très difficile de comprendre le bootstrap de Zend Framework et sa cartographie. Je lis le manuel, je le suis et les choses commencent à fonctionner, mais je ne sais pas exactement comment elles se déroulent.

Je ne sais toujours pas non plus comment les modèles, les vues et les contrôleurs fonctionnent ensemble et comment planifier une application dans Zend Framework. En ce qui concerne core php, j'ai exactement en tête ce qu'il faut faire et les traduire facilement en code, mais dans Zend Framework, je ne sais pas comment traduire mon idée.

Umair Abid
la source
10
Si vous débutez dans MVC, mettez en place un échafaudage MVC avant d’ utiliser l’un de ceux qui sont à part entière - ils ne sont pas propices à l’apprentissage.
Treecoder
2
@greengit c'est ce que j'ai fait!
Kyle Hodgson
Zend Framework n'est pas difficile, il faut un peu de temps à apprendre, à cause d'une mauvaise documentation, mais je peux vous assurer que c'est un framework très puissant. Nous avons développé de gros logiciels d'entreprise sur ZF2, et la flexibilité de configuration est extraordinaire dans ZF.
Albanie

Réponses:

38

Zend Framework est difficile. Il ne s’agissait pas d’un cadre d’entrée de gamme, mais d’une connaissance des concepts en jeu 1 . Cela dit, la première exigence de Zend Framework 2.0 est de simplifier un peu les choses:

Facilite l'apprentissage

Fin 2009, nous avons mené une enquête auprès des utilisateurs du framework pour déterminer ce qu'ils utilisaient, quels environnements ils utilisaient et quels étaient leurs besoins. Le principal problème, sans exception, était la difficulté d'apprendre le cadre. Certaines de ces questions incluent:

  • Difficulté dans la "première heure" avec le cadre.
  • Incertitude sur les "prochaines étapes" après le démarrage rapide.
  • API incohérentes dans le code source lui-même. Un composant peut utiliser des "plugins", un autre "assistants" et un autre "filtres".
  • Incertitude sur l'emplacement des points d'extension et sur la manière de les programmer.
  • Confusion sur le fait de savoir s'ils peuvent utiliser Zend Framework uniquement en tant que pile MVC ou en tant que composants individuels.

Donc, ce n'est pas juste vous, c'est difficile pour tout le monde - lisez l'intégralité de la page du wiki, il y a pas mal de choses identifiées comme étant inutilement complexes. Mais même si la condition ci-dessus est remplie, elle ne deviendra tout de même pas un cadre de base, ce qui signifie que ce n'est pas un cadre sur lequel vous devriez apprendre, mais que vous devriez utiliser lorsque vous avez compris les concepts en question.

Puisque vous êtes encore en train d'apprendre, il serait beaucoup plus utile de construire votre propre architecture MVC. Le blog 2 notoire de Rasmus Lerdorf " Le framework sans cadre PHP pour MVC " donne un exemple très simple et clair de MVC via PHP procédural, sans aucune structure ni autre bibliothèque tierce impliquée.

Mais si vous voulez vraiment apprendre avec un cadre, vous devriez envisager un micro-cadre plutôt qu'un complet. Slim a une base de code très petite, propre et minutieusement testée, idéale pour apprendre. Je n'ai pas joué avec un autre micro-cadre, vous devriez faire vos propres recherches et décider lequel est le mieux pour vous.

Et pour une introduction rapide et sale au routage, voir ma réponse à cette question . Ce n'est pas un concept très difficile à comprendre, mais Zend Framework lui donne l'air de beaucoup plus qu'il ne l'est réellement .

1 La meilleure description que j'ai lue pour ZF est que c'est un framework de construction de framework , pas un framework d'application. Sa puissance brute et sa liste extrême de fonctionnalités ne conviennent pas aux sites Web de petite à moyenne taille. Malheureusement, je ne trouve pas vraiment où j'ai lu ça.

2 Lisez l'avertissement en haut de l'article.


Update, inspiré par le commentaire de @ Karpie:

Un cadre n'est pas censé être difficile, son objectif est de faciliter les choses. Il est possible que même avec une bonne compréhension des concepts en jeu, ZF ne vous convienne pas.

De nombreux facteurs subjectifs entrent en jeu lors du choix d'un framework, et à moins que tous les frameworks manquent des fonctionnalités dont vous avez absolument besoin - et ne peuvent pas écrire vous-même, vous devez éviter ZF et utiliser un framework plus naturel.

Si vous connaissez les concepts, le cadre ne devrait pas vous gêner.

Yannis
la source
3
Même avec la connaissance des concepts, c'est sacrément difficile à comprendre, et pour être honnête, je ne pense pas que cela en vaille la peine. La documentation est souvent fausse, des exemples sur le Web après des années habituellement périmées, le canal de support IRC est généralement mort et, d'après ce que j'ai vu, il n'y a pas d'autre endroit où obtenir de l'aide.
Sevenseacat
@ Karpie Je ne trouve pas ça si difficile, pour être honnête. Mais c'est un peu idiomatique, donc cela convient certainement mieux à certains développeurs qu'à d'autres. Par exemple, je trouve cela plus facile à comprendre que CodeIgniter, mais c'est juste à cause de mon processus personnel: je préfère lire le code que la documentation, et le code de CI est tellement rempli de merde que mon esprit s'est éteint. Mais pour la plupart des développeurs, CI est beaucoup plus facile à apprendre que ZF, et tout le monde n'est pas d'accord pour dire que le code de CI est plein de merde. L'important est qu'un framework ne soit pas supposé être difficile à utiliser, s'il en existe toujours d'autres.
Yannis
Je trouve que Zend Framework 1 est relativement facile à comprendre. Mais vous avez dit l'idée derrière ZF2 était de rendre plus facile , je me sens comme il est beaucoup plus complexe que jamais.
acheté777
Tout dans ZF2 est trop compliqué. Il serait bon de présenter Zend "framework" comme une collection de modules / bibliothèques. Le cadre actuel est manquant. Il n'y a pas de couche modèle, vous devez donc implémenter la vôtre, qui est généralement un désordre, ou utiliser Doctrine, qui nécessite une certaine intégration. Pour écrire des tests unitaires, vous devez passer un temps ridicule à déchiffrer le manuel et à écrire (ou essayer de trouver en ligne) du code juste pour amorcer vos tests. Bien que cela puisse être construit autour de concepts solides, leur interprétation de ces concepts est terrible.
Vladimir
11

Je n’aimais pas le manque de découvrabilité lorsque j’ai commencé à utiliser Zend Framework, trop de classes reposent sur des tableaux et vous devez rechercher les clés que vous pouvez / devez définir.

Il n'y a rien de mal à avoir des méthodes clairement définies ou des paramètres nommés, cela contribuerait grandement à la découverte.

Le framework Yii est encore pire avec ce genre de chose.

DBlackborough
la source
3
+1 La raison majeure pour laquelle je ne considère pas sérieusement l’absorption de ZF / ZF2 doit être la laideur, l’auto-complétion / allusion et l’intelligence d’esquiver les configurations basées sur un tableau imbriqué. Cela viole mon aversion personnelle pour la surutilisation de tableaux dans un monde OO.
Gavin Howden
1
Exactement mon avis aussi.
Daniel
Je ne trouve pas que Yii 1 soit trop difficile. Peut-être que c'est pour moi. : P
Eugine Joseph
5

Quelques problèmes avec ZF, qui rendent ennuyeux (et difficile pour les débutants) de travailler avec:

ORM non inclus . On pourrait penser que cela devrait être très bas du framework MVC moderne, pourtant ZF ne vient qu'avec Zend_Db_Table, qui est ridiculement bas. Vous pouvez utiliser Doctrine, mais si vous êtes seul, il n’est en aucun cas intégré à ZF.

Routeurs d'URL gonflés et illisibles . Par exemple, il faut 9 lignes de code pour définir le routage le plus simple:

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

Étant donné le nombre de questions liées à cela, il est tout sauf simple pour la plupart des gens. De plus, je ne peux pas m'en empêcher et le comparer à Django, où l'équivalent ci-dessus serait

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

Zend_Aclest beaucoup compliqué pour la plupart des cas d'utilisation. Normalement, vous auriez une authentification pour identifier l'utilisateur. Et une option pour limiter facilement l'accès à certains contrôleurs uniquement aux utilisateurs authentifiés. Pour de nombreux cas d'utilisateurs, cela suffit. Pour les cas plus compliqués, il appartient à la logique métier dans le contrôleur de déterminer si l'utilisateur dispose des autorisations nécessaires pour effectuer certaines actions. Dans ZF, vous n'avez pas l'option de limiter facilement l'accès uniquement aux utilisateurs authentifiés. La méthode standard consiste à utiliser ACL et le système de rôles, quelle que soit la simplicité de vos besoins.

Répertoire gonflé et disposition des fichiers . La structure de répertoire recommandée ressemble à ceci:

<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/
vartec
la source
4

Zend Framework est comme un groupe de bibliothèques indépendantes qui fonctionnent ensemble comme un framework. Il est très difficile de développer quelque chose à la fois découplé et "facile à utiliser". Par "facile à utiliser", je veux dire faire des choses complexes avec quelques lignes de code.

Donc, commencer avec Zend est plus difficile que d'autres frameworks, comme CakePHP. Mais il est aussi plus facile d’étendre et de personnaliser votre application sans code corrompu. Zend respecte également les normes et les modèles de conception de son code. Ainsi, une fois que vous avez lu le code de la structure, vous pouvez deviner ce qui se passe.

Lorsque vous dites que vous n'avez aucune idée de la façon dont les modèles, les vues et les contrôleurs fonctionnent ensemble, ne blâmez pas le cadre. Il implémente MVC comme n'importe quel autre framework, sauf qu'il sépare le modèle de la structure de base de données qui, dans de nombreux frameworks, est implémentée dans la même classe. Donc, vous allez devoir faire face à beaucoup de classes comme Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset, etc ...

C'est pourquoi je pense que Zend Framework est plus compliqué, car il est très découplé et vous pouvez utiliser ses classes dans d'autres projets qui n'utilisent pas ZF.

gustavotkg
la source
3

Zend Framework nécessite des bases solides en POO et en Design Patterns. D'après mon expérience, je ne trouve que des programmeurs Java-JEE-Struts-Spring expérimentés qui se familiarisent facilement avec Zend Framework. Un développeur PHP moyen a du mal à digérer les concepts et l’architecture de Zend Framework. Mais vois hey! Zend Framework vient de la société 'Zend' qui crée PHP en premier lieu. Donc, il faut réfléchir, peut-être sinon respecter!

Rohit
la source
1
Rasmus Lerdorf a créé php, zend est un fervent partisan de php. De ce dont je me souviens.
Sarmen B.
Je ne peux pas être en désaccord là-bas. Je suis un développeur Java. Non seulement j'ai trouvé facilement mon chemin dans ZF, mais je l'ai préféré à d'autres frameworks.
Jkushner
-2

Je crois que zend est juste pour rendre les choses compliquées, MVC est juste une fraude logiquement son travail comme PHP simple. mais vous le développez devant MVC, par exemple en séparant des fichiers dans différents répertoires.

Rappelez-vous que qui dit que Zend est très sécurisé et incapable de pirater est un grand imbécile. Zend peut également pirater facilement si vous n’avez pas utilisé les protections d’injection Mysql. Je voudrais vous suggérer de définir vos propres fonctions, puis de séparer vos fichiers dans des répertoires différents pour le rendre similaire. MVC enregistrez vos fonctions, vos classes et tout autre matériel de base dans un répertoire appelé contrôleur, puis ajoutez vos pages Web dans un répertoire différent, selon vos besoins. pour inclure tous les fichiers de fonction que ce répertoire connaîtra sous forme de vue. Placez vos fichiers javascript et css dans des répertoires différents qui seront appelés modèles.

Rappelez-vous que dans ce monde, beaucoup de gens travaillent toujours dur pour rendre les choses plus compliquées, car ils sont eux-mêmes compliqués à comprendre.

PHP est la langue que vous avez apprise dans les livres et auprès des enseignants. Zend n'est rien qu'un cadre, pour rendre les choses compliquées à vos clients. Ainsi, chaque fois que le client aura besoin de modifications, il sera renvoyé aux vrais développeurs et ceux-ci vous factureront plus d'argent. Zend est protégé, c'est tout simplement un mensonge, une seule erreur comme le codage php simple peut rendre le site hackable.

Pooja dhimbani
la source
-6

Au moins, le "démarrage rapide" doit être plus facile afin de rendre un cadre convivial ... si vous préférez quelque chose de plus difficile, je dirais "ZF est le meilleur framework PHP", sinon PAS. J'ai téléchargé ZF-2 et essayé (honnêtement, je suis novice chez ZF). Ce qui est triste, c'est que je n'ai toujours pas trouvé de «guide de démarrage rapide» solide avec un simple projet Skeleton sur Internet. Tout ce que je recherche, c’est un moyen simple d’inclure des fichiers de bibliothèque et de créer un dossier de projet avec les fonctionnalités de MVC. J'ai utilisé Codeigniter, Cake php, Yii mais je l'ai trouvé assez hostile. Oui, je sais que Zend met à niveau PHP, mais cela ne veut pas dire que c'est le meilleur framework ou ce que vous allez dire.

RAM
la source
continue à ne pas aimer .... LOL
Ram