2012-01-11 3 views
10

Ma question:
Quels sont de bons exemples de motifs de conception utilisés dans CakePHP?
Motifs de conception utilisés dans CakePHP

Pourquoi utiliser CakePHP Comme mon contexte
Je l'ai utilisé CakePHP pendant environ un an donc je pense qu'il est plus facile pour moi de penser dans ce contexte. CakePHP est également riche en utilisation de modèles de conception (j'en suis sûr) - Je ne sais pas quels sont les modèles utilisés autres que quelques modèles évidents.

Exemples de livres que j'ai lu sur le sujet:
Je lis les livres que tous les modèles d'une manière ou une autre conception de la couverture ci-dessous; malheureusement, ils utilisent principalement des exemples de code Java et C++, ce qui rend plus difficile pour moi de maîtriser les modèles de conception au niveau pratique (je suis un développeur PHP donc c'est difficile pour moi de l'absorber):
Enterprise application architecture ", par Martin Fowler
"Head First design Patterns", par Gang of Four (Eric Freeman, Elisabeth Freeman, Kathy Sierra & Bates Bert) (2004)
" design Patterns: Elements de resuable Logiciel orienté objet) ", par Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides)

Exemples de formes que je peux observer dans CakePHP
deviner le fichier -Je suis config utilise quelque chose de semblable à l'usinemodèle
$ this- -peut-être> params utilise quelque chose lié à l'observateur modèle? Je ne sais pas ce ...
-MVC (évident! PHP utilise depuis gâteau la structure du fichier MVC)
-ORM (un autre très évident d'un)
le aide -peut-être HTML utilise le modèle de décorateur?

Résumé
Je ne pense pas que quiconque d'aller en bas de la ligne et d'identifier tous les modèles utilisés dans CakePHP - je recherche juste pour quelques exemples de modèles de conception qui devrait être évident que je m manquant.

+4

IMHO Cake utilise malheureusement trop peu de motifs. Plus d'OO/encapsulation/injection de dépendance/couplage lâche/typage de canard aiderait beaucoup dans le développement d'applications plus complexes. Juste mes 2 cents. – deceze

+0

ActiveRecord, association de données d'association, contrôleur frontal et MVC. – bancer

+0

Je commence à voir comment certains dessins se chevauchent. Par exemple, le motif de conception "modèle de domaine" chevauche le "M" dans MVC. Le modèle "modèle de domaine simple" a une table de base de données pour chaque objet de domaine. Cela chevauche le modèle standard CakePHP pour le "M" ou le modèle dans MVC (où nous avons effectivement une classe "M-Model" par table de base de données). Un autre exemple de chevauchement est le modèle "contrôleur frontal" où le "C" (contrôleur) dans CakePHP agit également comme un "script de transaction" (puisque cake a $ this-> request qui gère $ _get/$ _ post/et $ _request. ..) –

Répondre

4

Une idée qui me vient à l'esprit est le concept mixins. Pas exactement un modèle mais en fait une fonctionnalité de langue disponible dans certaines langues (c'est-à-dire des modules dans Ruby) mais pas dans d'autres (par exemple Java). Il arrivera à PHP quand 5.4 deviendra stable et nous obtiendrons traits, mais les comportements de modèle de CakePHP sont un bon exemple d'imitation de ce type d'héritage multiple où ce n'est normalement pas possible.

class Post extends AppModel { // we can only inherit from one class 

    public $actsAs = array('This', 'That', 'Other'); // but we can do this instead 

} 
+0

N'est-ce pas une limitation de CakePHP, mais plutôt PHP lui-même comme langage de programmation? –

+0

En effet, mais CakePHP a fait de l'absence de cette fonctionnalité de langue un non-problème en nous permettant de le faire facilement dans nos applications MVC jusqu'à PHP 4. À noter, ce ne sont pas seulement des comportements qui ressemblent à mixins/traits .. mais aussi les composants du contrôleur, les aides de vue et les tâches du shell. – deizel

+0

Votre point sur les mixins/héritage multiple vaut la peine d'être mentionné. Je ne savais pas que PHP 5.4 allait inclure des mixins - c'est une bonne nouvelle. –

3

modèles de conception de logiciels (comme un RoR):

  • Convention sur la configuration: tous les fichiers de configuration de Configuration

  • Model-View-Controller: dossiers: Modèle, contrôleur, Voir , etc

  • ActiveRecord, association de données d'association: mappage de base de données

  • Front Controller: principal point d'entrée (index.php)

trouver dans les commentaires:

modèles créationnelle:

  • Singleton - Recherche par « getInstance, singleton "

  • Usine - trouver par" usine "

  • Builder - trouver par "constructeur"

des modèles structurels:

  • Adapter - trouver par "adaptateur"

  • contrôleur avant (.htaccess, comprennent)

Modèles de comportement:

  • Stratégie - Recherche par "stratégie"

Vue:

  • modèle vue en deux étapes - "en deux étapes vue"
Questions connexes