Quel projet PHP open source a la conception de POO «parfaite» dont je peux apprendre? [fermé]

9

Je suis un débutant à la POO et j'apprends mieux par l'exemple.

Vous pourriez dire que cette question est similaire à Quels projets open source Scala devrais-je étudier pour apprendre les meilleures pratiques de codage - mais en PHP.

J'ai entendu dire que Symfony a la meilleure «architecture» (je ne prétendrai pas savoir ce que cela signifie exactement), ainsi que Doctrine ORM. Vaut-il la peine de passer plusieurs mois à lire le code source de ces projets, à essayer de déduire les modèles utilisés et à apprendre de nouvelles astuces?

J'ai vu un nombre égal de pages Web dissester et aimer la base de code de Zend (fournira des liens si cela est jugé nécessaire).

Connaissez-vous un autre projet qui ferait couler de joie tout développeur vétéran de la POO?

Permettez-moi d'ajouter que l'aspect pratique et la portée de l'utilisation ne sont pas du tout une préoccupation ici - je veux juste faire:

  • Choisissez un projet qui a une base de code jugée géniale par les développeurs bien meilleure et plus grande que moi.
  • Écrivez du code qui réalise ce que fait le projet.
  • Comparez les résultats et essayez d'apprendre ce que je ne sais pas.

Fondamentalement, une base de code d'intérêt académique. Des recommandations s'il vous plaît?

Aditya MP
la source
4
Je ne suis pas un expert, mais je ne pense pas que la POO soit courante ou nécessairement encouragée en PHP.
asfallows
3
@asfallows En effet, c'était le cas - mais avec la sortie de PHP 5.3, les choses changent et il y a une inclinaison définitive vers l'utilisation de toutes les nouvelles fonctionnalités fessées que le langage fournit pour le codage OOP.
Aditya MP
3
Il n'y a rien de tel qu'une "conception OOP parfaite".
Robert Harvey
1
Je vois que vous êtes déjà membre de Code Review Stack Exchange. Utilisez-le intensivement, c'est le plus précieux échange de pile lors de l'apprentissage, nous aimerions voir et discuter du code que vous
écrirez
1
@Arkh Harsh. Essayons de nous abstenir d'attaques personnelles. Si vous n'êtes pas d'accord avec les jachères, prenez le temps d'écrire un commentaire bien écrit.

Réponses:

2

Symfony 2 est probablement le meilleur grand projet à apprendre, mais il est assez gros.

J'ai récemment trouvé un petit projet PHP open source soigné appelé Phrozn (générateur de site statique). Sa base de code est relativement petite, vous pouvez donc l'examiner assez rapidement.

MISE À JOUR:

Phrozn est moderne (utilise PHP 5.3+ et en dépend fortement), il est extensible, a une couverture de code stricte. Il réutilise également le code d'autres projets bien écrits tels que Symfony (YAML), Zend (Autoloader), PEAR et Twig.

OOP, utilise des espaces de noms et c'est très bien documenté. Je ne dis pas que c'est parfait ni qu'il peut être comparé à un projet comme Symfony mais ça vaut le coup.

Christian P
la source
1
Pouvez-vous nous donner quelques détails supplémentaires sur la base de code de Phrozn? Qu'est-ce qui le rend idéal pour étudier, à part sa taille?
yannis
1
@YannisRizos :) Le code peut être trouvé sur github, vous pouvez donc y jeter un coup d'œil. github.com/farazdagi/phrozn
Christian P
17

Eh bien, personnellement, je dirais consultez Symfony2 . C'est à peu près le meilleur grand projet de bout en bout que j'aie jamais vu. Cela ne veut pas dire qu'il n'y a pas de mauvaises parties, mais dans l'ensemble, c'est plutôt bien.

Maintenant, Zend est au milieu. Si vous regardez l'API publique, c'est plutôt bien. Il y a quelques parties WTF, mais pour la plupart, ça va. Si vous commencez à creuser davantage, vous trouverez BEAUCOUP plus de code WTF ...

En ce qui concerne ce qu'il faut éviter carrément:

  • CodeIgniter - Modèle Fubar MVC
  • Kohana - Beaucoup de statique
  • Cake - Sémantique des objets PHP 4
  • Drupal - Pas du tout OOP
  • Wordpress - Pas du tout OOP

En ce qui concerne le reste, vous constaterez que c'est aléatoire. Il y a de bonnes et de mauvaises pièces dans tous les modèles. Jetez un œil au Lithium , il a des concepts de design vraiment cool. Mais il a également beaucoup de redirection fubar et de piratage pour que cela fonctionne.

Et c'est ce qu'il faut apporter à la banque. Il n'y a pas de design parfait, n'essayez pas d'en trouver un. Au lieu de cela, regardez-en beaucoup et décidez par vous-même. Essayez chacun, essayez de les casser. Essayez de les comprendre simplement en les lisant (ce qui est un bon test de conception saine) ...

Juste mon opinion personnelle ...

ircmaxell
la source
2
+1 pour symfony2, mais plus important encore, l'ensemble de la communauté qui l'entoure. ZF2 mérite probablement d'être mentionné également, bien qu'ils semblent garder les choses plus abstraites.
Adrian Schneider
1
+1 pour symfony2 également. Il a une base de code vraiment solide, il utilise beaucoup de meilleures pratiques d'autres langages et frameworks, une grande communauté, les développeurs principaux sont des gens utiles et joignables. Bien que le développement se poursuive avec la refactorisation des choses en cours de route pour les améliorer, l'état actuel est prêt pour la production. Fabien Potencier, le créateur de Symfony, a une série d'articles de blog ( fabien.potencier.org ) sur la création d'un framework avec des composants Symfony. Cela devrait être un bon point de départ, car il a écrit ces articles pour aider les gens à apprendre des choses.
Hakan Deryal
La lecture du code source de symfony2 est en fait une inspiration sans être trop complexe à saisir, bon point. Cependant, il n'est pas développé par TDD, ce qui serait probablement la pierre angulaire de la conception "parfaite" OOP "- car aucune conception n'est parfaite, ce qui signifie que vous devez la changer et pour cela, vous avez besoin des tests.
hakre
2
Eh bien, vous ne pouvez pas comparer Symfony, Zend ou Kohana à Wordpress et Drupal, sérieusement.
Daniel Ribeiro
Je vous remercie! J'ai téléchargé Symfony, je vais commencer à le comprendre. Merci d'avoir confirmé mes craintes à propos de CodeIgniter: j'ai entendu une fois sur l'IRC SilverStripe que "CodeIgniter est un cadre OOP pour débutant et fait beaucoup d'erreurs pour débutants" - et ils ont commencé à écrire en PHP4, mais n'ont pas eu le temps de refactoriser intensivement afin Je doute qu'ils aient utilisé toutes les excellentes fonctionnalités de ce langage. Veuillez noter que je ne dissèque pas CI! J'adore le cadre et le paradis sait combien de projets sont devenus plus faciles pour moi parce que je les ai utilisés. Mais dans un but d'apprentissage, ce n'est peut-être pas le meilleur.
Aditya MP