web-dev-qa-db-fra.com

Cakephp et Yii: similitudes/différences/vitesse?

Je suis un programmeur CakePhp. J'ai décidé d'essayer le framework Yii. J'aimerais savoir en quoi CakePhp est similaire et différent de Yii. En outre, Yii est-il sensiblement plus rapide que CakePhp comme ils le prétendent?

28
aWebDeveloper

Différence entre Cake et Yii

  1. Cake a un modèle par contrôleur où Yii en a un par action, c'est-à-dire que le contrôleur est indépendant d'un modèle particulier dans Yii
  2. Dans Yii, vous devez spécifier manuellement votre vue et vos modèles dans chaque action.
  3. Dans Yii, les enregistrements associés et associés ne sont pas récupérés, sauf spécification manuelle.
  4. Dans Yii, un modèle peut être de 2 types (c.-à-d. Étendu de) Modèle d'enregistrement actif ou Modèle de formulaire selon que vous souhaitez enregistrer les données ou non, respectivement. 
  5. Cakephp applique la convention, tandis que yii est la flexibilité. 
4
aWebDeveloper

D'après l'expérience personnelle, il existe plusieurs différences entre les deux cadres, en particulier la manière dont les modèles sont gérés dans cake vs yii. 

  • Dans Cakephp, vous ne pouvez pas utiliser de clé primaire composite , C’est l’affaire principale Pour moi. La clé primaire composite Est prise en charge dans Yii.
  • Cakephp applique convention, alors que yii favorise convention, vous n'êtes pas obligé de suivre un certain standard. Bien que la convention imposée soit un bon moyen de mettre en place de bonnes pratiques en matière de programmation, la flexibilité offerte par yii gagne cette manche pour moi.
  • Performances prêtes à l'emploi, je pense que yii a l'avantage, mais comme pour l'optimisation des performances, avec une configuration de cache appropriée et tant que vous utilisez les modèles ActiveRecord avec prudence, ils ne sont pas si différents l'un de l'autre.

En guise de remarque, j'ai mis en œuvre des applications Web principales avec CakePHP et Yii. L'équipe m'a fait savoir que l'équipe moins expérimentée préférait CakePHP, alors que Yii était préféré de l'équipe plus expérimentée. Fais-en ce que tu veux.

41
ZaQ

Un ancien post mais en ajoutant un peu d'expérience.

J'utilise le gâteau depuis un moment maintenant. 3 ans pour être précis.

Actuellement, Yii est certainement le leader de la technologie MVC en PHP. Il s'agit d'un framework auquel aucun autre PHP framework ne peut actuellement se comparer. Personnellement, j’ai été vraiment impressionné par la "grille" ... Je pensais que PHP avait toujours manqué à ça :) Il est incroyablement rapide et convient à un grand nombre de développeurs.

Pour CakePHP: J'ai lu plusieurs blogs où les gens prétendent et s'accrochent probablement à "conventions" et "rigueur" du cadre. 

Cela dit, je suis d'accord et pas d'accord. Les affirmations qui sont habituellement formulées semblent assez évidentes une fois que l’on s’y prend. Chaque règle qui gâteau citation Forces citation peut être facilement remplacée. Ce qui est le plus important, ce que les gens ne remarquent pas, c'est pourquoi les conventions sont-elles forcées?  

Si vous êtes un développeur qui a beaucoup de pression de production, je dirais auto-magic de gâteau qui se passe en coulisse, comme obtenir des données de modèles connexes, enregistrer des données de modèles connexes, définir des relations basées sur conventions est absolument incroyable.

La propreté qui découle du respect de ces conventions ne peut pas être expliquée ici, mais seulement expérimentée. 

J'ai également lu de nombreux blogs sur lesquels j'ai constaté des plaintes concernant la rapidité du cadre. Dans mon expérience, je dirais que vous devriez lire le livre. Les personnes définissent le nombre de relations, Cake par défaut récupère toutes les données de ses modèles associés. Vous pouvez remplacer ce comportement et récupérer uniquement les données dont vous avez besoin. En fait, reliez vos modèles à la volée. Cake a également un comportement appelé "confinable" dans le but même.

Une fois que vous avez les mains sur le gâteau, la production et les développements sont véritablement «RAPIDES».

En outre, beaucoup de choses ont changé depuis CakPHP 2, elles sont très rapides et encore plus évolutives.

Tout compte fait, je crois vraiment que Cake a une très mauvaise documentation; et avec une meilleure documentation, davantage d'exemples et de référentiels du monde réel, ce serait un concurrent plus fort.

16
Kishor Kundan

Les deux frameworks sont très similaires, mais j'aime bien Yii parce que c'est rapide, utilise le chargement paresseux sur des modèles, des centaines de helpers (jQuery Widgets), pas besoin de XML/YAML, beaucoup d'extensions, une console et un générateur de code Gii, une interface d'administration sans magie (+ personnalisable, + contrôle), forum actif, entièrement et magnifiquement OOP Design, même système ... etc.

Cakephp est aussi un très bon framework, j'aime bien qu'ils prévoient des cours de formation.

5
ls_ttt

Je prie de différer avec tous ces bashing Cakephp. En tant qu'utilisateur des deux frameworks, si vous savez ce que vous faites, Cakephp est TRÈS flexible, ce qui signifie qu'ils demandent aux utilisateurs d'utiliser des conventions, mais la même documentation vous indique comment résoudre ce problème. Et jusqu'à présent, aucun critère de référence n'a été fourni, alors honte à vous tous ...

D'après mon expérience, j'ai dû faire des réglages de performances pour Cake, pas pour Yii. Je suppose donc que je ne peux pas comparer pour le moment le fonctionnement des éléments. De plus, la plupart des tests utilisent Cakephp et d'autres frameworks prêts à l'emploi, donc je m'attendrais à ce que Cakephp fonctionne mal.

4
vsecades

Je travaille avec Cakephp depuis environ 2 ans et j'ai presque terminé ma première expérience à Yii. (J'ai aussi passé une année dans ZendF et je l’ai détesté). Cakephp était bon pour son système strict, mais avait beaucoup de limitations en ce qui concerne sa flexibilité. moi". La meilleure caractéristique est qu'il commence votre journée avec une classe de contrôleurs vide, utilisée pour hériter de tous vos contrôleurs. Mais bientôt, je le découvre, je peux sauter dans et remplacer les fonctions yii standard avec une étendue d'application spéciale, comme le rendu. Dans le gâteau, vous ne pouvez pas faire beaucoup de piratage dans votre code d'application. vous irez éventuellement dans le répertoire principal pour certains cas très très particuliers (très mauvaise idée lorsque vous effectuez une mise à jour principale).

Les plugins/extensions dans yii sont si faciles à créer comparés à cakephp.

cakephp jusqu'à ce que je sache, ne supporte pas les modules. Je ne suis pas un fan de modules moi-même, mais lorsque votre code d'application augmentera, vous voudrez éventuellement le scinder en un groupe séparé, par exemple. vous pouvez externaliser le module à quelqu'un d'autre.

Je crois que le coeur de Cakephp est assez lourd pour ralentir sur les sites à fort trafic. ZendF est bien pire. Yii a une pile d'appels plus petite au moment où l'action est appelée.

Il n'y a pas de fichier cakephpt.php, mais un fichier yiit.php (tout le framework dans un seul fichier, uniquement pour la production) permettant de tout compiler à l'avance en utilisant apc/etc et d'enregistrer quelques millisecs dans les appels ouverts de fichiers système.

Le jeu de règles URL de YII et son inversion sont imbattables pour peut-être tous les autres frameworks en php. IMO yii La configuration d'URL est trop facile comparée à Cakephp. et ensuite, il commence également à créer l'URL exacte du navigateur à partir de cette même configuration lorsque vous appelez createUrl, ce qui modifie les URL de votre application uniquement avec le fichier de configuration. Si vous choisissez de déplacer un contrôleur/module dans un (sous) domaine séparé, il suffit de modifier la configuration pour que votre code d'application reste imprudent.

La façon dont les modèles ont des étiquettes d'attributs, des règles, celles-ci peuvent également être modifiées. toutes les propriétés de modèle et de support prenant en charge/post - lifesaver. alors les règles de la relation sont aussi bien meilleures que ce qui est capable dans Cakephp. les validations et même le code php brut dans certaines règles est beaucoup de flexibilité. 

La convention de chemin de fichier qui est très flexible est également unique à yii. et les sous-présentations facilitent également la possibilité de réutilisation de vos vues.

1
thevikas

J'ai essayé d'apprendre Cakephp mais la documentation, bien qu'étendue, est médiocre dans sa structure. Par exemple, dans la section FormHelper du manuel, il décrit les options de formulaire sans expliquer son fonctionnement, mais uniquement la syntaxe, puis affiche la sortie HTML. Pour un débutant comme moi, je veux connaître la syntaxe ok, mais aussi, où vont les données de formulaire collectées, comment puis-je récupérer les champs de saisie, comment puis-je diriger la saisie de formulaire où aller, qu'est-ce que cela signifie? 'créer le contexte du formulaire', quel est ce contexte et comment est-il utilisé, etc. 

Qu'est-ce que ça veut dire ,

"En supposant que cet utilisateur a un groupeAndBelongsToMany. Dans votre contrôleur, définissez une variable plurielle camelCase (groupe -> groupes dans ce cas, ou ExtraFunkyModel -> extraFunkyModels) avec les options de sélection. Dans l'action du contrôleur, vous mettriez les éléments suivants:".

J'ai étudié Codeigniter et ses explications étaient très intuitives, mais la documentation de Cakephp, bien que très bien présentée, n'explique pas les choses, mais se lit plutôt comme un manuel de référence. Je suis en train de regarder Yii et, bien que plus complexe que Codeigniter, la documentation est beaucoup plus informative et donc plus compréhensible que celle de Cakephp.

0
Jason