J’aime beaucoup le dessin permettant d’expliquer (globalement) la méthode de codage MVC de CakePHP dans OCPHP (page 3).

Prenons un exemple. Dans RefStats, je génère des graphiques en me basant sur des données d’une base de données dont le modèle est le suivant :

myBase

  • idSite (primary key)
  • idKeyword (primary key)
  • date (primary key)
  • position

J’aurais pu, dans mon controlleur, faire une requête de sélection. On ne peut plus simple !
!

$this->myBase->findAll(array(‘idSite’ => $site, ‘idKeyword’ => $keyword));

Seulement voila, les données retournées par cette requête sont dans un format inexploitable par ma vue par la suite (dans le but d’un affichage dans un format quelconque (html, xml ou csv par exemple).

J’ai donc créé une méthode dans mon modèle qui execute la même requête de findAll et qui traite les données retournées dans le but de retourner un tableau exploitable par la suite.

La solution de facilité aurait été de faire le findAll dans le controlleur tout de même et de traiter les données là-bas.

Et pourtant, quand on y réflechit, ce n’est absolument pas le plus simple. En effet, cela va quand vous n’avez besoin de récupérer les données qu’une seule fois dans votre application.

Mais là, je dois les récupérer au moins 3 fois à trois endroits différents.

Vive les répétitions de code dans le controlleur ! Et les multiplications de risques de bugs.

Le mentra qui se trouve en dessous de l’image que j’ai donné ci-dessus dans le document pdf est donc on ne peut plus à prendre au sérieux. « Think twice, code once ». « Réflechissez deux fois, ne codez qu’une ».

Si vous ne comprenez pas bien comment MVC fonctionne et que vous désirez approfondir cela, n’hésitez pas à assister à la conférence zend framework qui se déroule dans un mois et dans laquelle je ferais une présentation complète de la méthode. Les inscriptions sont ouvertes, on a encore largement assez de place et c’est gratuit !

 
Fork me on GitHub