8
votes

Projet PHP avec une excellente conception OOP à des fins d'études

Je suis récemment devenu intéressé par une conception appropriée des OOP dans les applications Web. Je pense que je comprends la plupart des principes et des modèles de conception, mais parfois j'ai un problème de les mettre en pratique.

J'utilise MVC et je pense que je suis capable de concevoir des contrôleurs et des vues à OUP WAY. Le problème que je suis confronté est avec des modèles. Je suis particulièrement obsédé par l'injection de dépendance et l'inversion du contrôle en général. Cela fonctionne bien dans de petits exemples, mais j'ai du mal à concevoir des modèles multi-couches complexes - je pense à différentes manières d'injecter des dépendances en couches inférieures, etc.

J'ai donc décidé de rechercher des projets fabriqués par des programmeurs d'OOP plus expérimentés que je pourrais étudier. Je recherche une application Web PHP, de préférence faite avec un motif architectural MVC. Cela ne me dérange pas que si cela a un modèle anémique (qui est généralement considéré comme anticipé, mais dans des applications de données lourdes, je suis souvent obligée d'utiliser des modèles anémiques).

Merci beaucoup.

Edit: Je ne cherche pas un cadre mais pour une application complète. Les cadres n'ont généralement pas beaucoup de choses à voir avec l'architecture modèle.


0 commentaires

7 Réponses :


-1
votes

Le framework de codeigniter vous vient à l'esprit comme une source d'étude décente


6 commentaires

Merci, mais je ne cherche pas un cadre mais pour une application complète. Les cadres traitent de modèles que peu profondément (ou pas du tout).


@Tomik comment ça va? Cela semble un peu une déclaration générale de «cadres» en général. Dans mon expérience, Coweigniter gère parfaitement la séparation des couches tout en étant léger et épuré.


Dis moi que c'est une blague. LedicezidItre est la nulle part près de l'excellent design OOP. Il suffit de regarder la dépendance de tout sur le codédiciter Super Object.


: P J'ai dit une source d'étude décente, pas la fin de tous les sheeseses que vous devez détester jQuery aussi; D


@treeface: UserSigniter's UserGuide dit: "Les modèles sont des cours de PHP conçus pour fonctionner avec des informations contenues dans votre base de données." - Dans ce contexte, votre déclaration peut être vraie. Cependant, je comprends le modèle de manière très différente - "Le modèle est un lieu de mise en œuvre de toutes les logiques commerciales de votre application". C'est très très général et il est naturel que les cadres ne puissent pas avoir de soutien pour une telle tâche générale.


Bien sûr, Tomik, mais CI est suffisamment flexible pour permettre de garder toute votre logique commerciale à l'intérieur d'eux. J'ai fabriqué des applications CI où les contrôleurs ne dirigent que le trafic entre les modèles et les vues sans effectuer une logique réelle sur les données.



0
votes

Je recommande fortement le codeigniter de Scratch Series sur Nettuttus +.

http: //net.Tsplus. Com / Tutoriels / PHP / CodeIntre-De-Scratch-Profiling-Benchmarking-Hooks /

Edit: @galen

Ce n'est pas correct. Consultateur prend en charge PHP 5.3.0 depuis la version 1.7.2.


1 commentaires

LedicezidItre fonctionne sur PHP 4.3, ce qui signifie qu'il utilise toujours un ancien modèle d'objet PHP4 limité.



4
votes

Igniter du code est PHP4, je ne le recommande pas trop. PHP OOP a changé depuis lors. Une meilleure idée serait Kohana

J'ai beaucoup appris en vérifiant Konstrukt . Le créateur est semi actif sur tellement =)


0 commentaires

1
votes

Magento Commerce dispose de modèles multi-couches complexes (www.magentocommerce.com) que vous pouvez choisir un tour ou deux de.

Mais mon expérience (personnelle) avec Magento était frustrante: j'étais piraté avec elle autour de la version 0.8-1.1 et elle est apparue surgirée et mal documentée. Essayer de déterminer comment cela a effectivement fonctionné était complexe: vous vous retrouveriez avec des fichiers de tonnes ouverts dans votre éditeur, la plupart appelés Abstract.php. Espérons que les choses se sont améliorées depuis longtemps depuis.


1 commentaires

Bonjour, merci de suggestion, cela pourrait vraiment être bon. Je pense que «vous vous retrouveriez avec des tonnes de fichiers ouverts dans votre éditeur, la plupart d'entre eux appelés Abstract.php» est un prix dont vous avez besoin pour payer si vous voulez un bon design. Malheureusement, de bonnes conceptions OOP ne sont généralement pas triviales. D'autre part, la complexité ne garantit pas la qualité! :RÉ



0
votes

Si vous recherchez «Excellent conception OOP», vous regardez probablement dans le mauvais coin. PHP n'est pas très fort à ses motifs de l'OOP. Si votre étude et votre situation vous permettent, je vous recommande de chercher dans un projet Java à la place.


7 commentaires

Les gens continuent à me dire cela, mais ils ne parviennent pas à fournir une raison. Donc, quelle fonctionnalité essentielle de PHP manque?


flamebait? Beaucoup d'exemples de motifs de PHP sur la bande (Google pour "PHP Modèles"). Depuis 5,3, la langue est très capable. Je pense que c'est plus sur la compétence des programmeurs dans un projet plutôt que la langue elle-même qui influence l'excellence dans la conception ...


Une langue «plus pure» oo n'applique pas un excellent design. C'est au concepteur. Et je ne sais pas quand vous avez pris votre doigt sur PHP, mais à la version 5, ses capacités d'objet sont assez fortes.


-1. PHP à concevoir en fonction de Java et est assez proche de 5,3. Si vous pensez que PHP a la merde OO Support, vous êtes un crétin.


Le support OO en PHP est plutôt bon. Cela dit, la plupart (mais absolument pas tous) le code "objet orienté" dans PHP est la merde.


Par exemple, PHP ne fournit pas beaucoup d'interfaces standard telles que par exemple. Une carte qui rend plus difficile la réutilisation des cours d'autres projets. En outre, lorsque vous procédez à une oopie appropriée dans PHP, les frais généraux d'inclure et de réinterpréter toutes les interfaces et les classes deviennent significatifs. Un cache de code OP n'autorise que tant pour cela, mais ne résout pas vraiment le problème. Comme Coronatus a écrit: Php Oo Design est basé sur Java. Java axe sur les modèles de OOP plus que PHP (PHP a-t-il un "bon" soutien que depuis 5,3). (Fyi j'ai 10 ans d'expérience dans PHP, 3+ en Java)


@schuilr: En ce qui concerne la carte, SplObjectStorage doit être quelque chose comme ça. Mais votre argument pourrait être vrai pour d'autres choses - SPL n'est pas très complète. Je pense que nous parlons de la langue PHP, pas d'interprète PHP. La vitesse n'est pas un point valide pour moi. Je suis essentiellement d'accord pour que OOP chez PHP n'est pas excellent, mais c'est assez bon.



1
votes

Je vous recommande de jeter un coup d'oeil à Symfony 2.

C'est probablement le projet PHP le mieux conçu. C'est SOLID , sèche et utilise des motifs, le cas échéant.


1 commentaires

Symfony est génial et consultez la doctrine 2.0 de sa soeur-projet.



1
votes

Quel est le problème à laquelle vous êtes confronté avec des "modèles"? Vous parlez d'injection de dépendance, mais cela n'a vraiment rien à voir avec le concept de «modèle» dans le contexte MVC. Si vous recherchez des exemples de gérer et de passer des dépendances Down Object Hiérarchies, vous voudrez peut-être jeter un coup d'œil à la mise en œuvre du conteneur d'injection de dépendance de Symfony 2.0.


1 commentaires

Je connais un conteneur de symfony di, c'est assez bien. Mais ce que je veux voir, c'est une certaine implémentation en action. Par exemple, même avec un conteneur DI complet, vous devez toujours résoudre le problème de l'injection du conteneur lui-même. Qu'est-ce qu'un modèle à faire avec di? Vous avez besoin de DI pour la mise en œuvre de la qualité des modèles multicouches.