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.
la source
Réponses:
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:
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.
la source
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.
la source
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:
É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
Zend_Acl
est 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:
la source
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.
la source
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!
la source
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.
la source
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.
la source