2008-11-25 9 views
5

Pour notre projet d'école, nous sommes chargés de définir un document de conception décrivant l'architecture d'une application PHP.Conception orientée objet pour application PHP

Nous sommes libres de décider quoi inclure dans le document.

Notre professeur a suggéré beaucoup de diagrammes (UML). Il nous a également demandé de considérer les diagrammes de classes, mais avec soin, car PHP n'est pas entièrement orienté objet.

Ma question: est-ce qu'une conception orientée domaine peut être conçue pour une application PHP? Que considérer lorsque vous faites OO en PHP? Quels sont les avantages et inconvénients? Des ressources utiles sur OO dans les meilleures pratiques PHP et PHP?

Répondre

9

À mon humble avis, il est assez difficile de décrire l'architecture d'une application sans savoir ce que l'application est censée faire. Toutes les applications (PHP ou autres) de toute complexité sont différentes. En second lieu, PHP5 vous donne des classes/objets et la pléthore habituelle de gogbings OO - donc le décrire comme «pas complètement orienté objet» est trompeur je pense. Si vous voulez dire que vous pouvez adopter une approche procédurale sans être limité aux objets, alors oui, mais si vous voulez que tout soit un objet, alors c'est votre choix.

DDD est-il réalisable pour PHP? Oui bien sûr. Une approche particulière de l'architecture ne dépend généralement pas de la technologie. Les meilleures pratiques, les avantages/inconvénients du design OO s'appliquent à la plupart des langages - PHP vous laisse libre de décider comment structurer votre code.

Vous trouverez peut-ce Best Practices parler du site PHP utile;)

2

PHP peut aujourd'hui être décrit comme totalement orienté objet par choix. Il offre tout ce dont vous avez besoin, mais vous n'êtes pas obligé d'écrire du code OO.

Il y a deux livres qui m'a beaucoup aidé à comprendre les principes OO par rapport à PHP:

  • PHP en action (Manning)
  • Guide d'étude Zend PHP5 (Zend)
2

La plupart des langues OO actuellement utilisées ne sont pas complètement orientée objet. Chaque langue a des idiosyncrasies et des pièges. Donc, je dirais que PHP est suffisant pour la plupart des projets simples. J'ai travaillé sur le Zend Framework qui est conçu comme une bibliothèque de classes OO, avec des motifs de conception et autres.

Une suggestion pour PHP est que vous devriez faire attention à son composant , qui vous donne des interfaces pour de nombreuses classes de base.

Je pense que c'est assez faible si votre professeur a dit, "mettez tout ce que vous voulez dans le document de conception, les diagrammes UML sont jolis." La documentation de conception est une partie importante mais malheureusement sous-évaluée de l'ingénierie logicielle. Votre professeur devrait vous montrer des exemples ou des modèles pour un bon document de conception.

0

OO est avant tout une méthode de conception. En tant que tel, il est possible de trouver un modèle OO qui peut être implanté dans les langages procéduraux. J'ai vu cela fait pour les projets C et COBOL. Et il m'a convaincu que presque tous les avantages de OO sont à faire avec le design et non pas l'implémentation du langage. Donc oui, vous pouvez créer un design OO avec beaucoup d'UML (diagrammes de classes, cas d'utilisation, couloirs de nage etc.) et vous pouvez l'implémenter en php (en utilisant des classes ou non).

Quoi qu'il en soit php est effectivement un sur-ensemble de OO donc si vous vous restreignez aux classes et fonctionne à l'intérieur des classes (== méthodes) vous avez une implémentation OO. La seule chose qui manquera sera les définitions d'interface, mais il fait très peu de sens pour définir des interfaces dans un langage avec une telle vérification de type (dé) limitée.

Questions connexes