PDO & MVC

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PDO & MVC

par momox » 03 janv. 2008, 12:28

PDO devrait être utilisé dans ton Modèle où les données sont récupérées et non dans une Action de ton Controlleur. Le Modèle se charge de récupérer les données. Le Controlleur n'a aucune idée du moyen de récupération des données utilisé par le Modèle. (XML, SQL, fichier texte, etc.)

Tu peux utiliser le design pattern Singleton (couplé à un Registre) pour instancier/récupérer ton unique instance de PDO. Le Singleton fait en sorte que ta classe ne pourra être instanciée qu'une seule fois. Si elle l'est déjà, son unique instance est retournée.

Quelqu'un me corrigera si j'ai fait une erreur dans mon explication.
Un peu a la méthode de cakePhp, j'ai divisé mon modéle et mon controlleur en actions qui sont liées.
Pour le registre, c'est bon, j'en ai fait un :)
J'ai un peu copié les idées du coté ZF et Cake, car il y avait de très bonnes choses :P

par Hywan » 03 janv. 2008, 12:03

Non non. Le modèle est une instance générée depuis le contrôleur. Après, les méthodes du modèle peuvent appeler le PDO, ou bien le modèle étend le PDO, ça dépend vraiment de comment fonctionne tes modèles, et de la relation qu'ils ont avec ta couche contrôleur. Mais ce que tu disais est juste.

par Xenon_54 » 03 janv. 2008, 11:47

Je crois qu'il y a eu confusion, non?

J'avais compris PDO comme l'extension PHP qui propose plusieurs "drivers" SQL.

Dans ce cas, est-de que ton Modele ne devrait pas être une instance d'une classe enfant de PDO ou quelque chose de similaire?

par Hywan » 03 janv. 2008, 11:25

Ça me paraît juste, et orienté ZF ;-).

Mais pour rester dans l'esprit de ZF (et j'ai fais comme ça également), mes modèles sont des DataObjects, i.e. ils n'ont que quelques attributs, et étendent un paquetage qui — en fonction des attributs — se débrouillent pour instancier tout le bazarre. Pour ce qui est du paquetage Database, mon instance de PDO est temporisé en attendant de nouvelles instructions. Elle est instanciée à partir des attributs du modèle. Donc ça équivaut à un Singleton (mais version DataObjects). C'est une autre façon de voir les choses, plus pratique au développement final de l'application je trouve.

par Xenon_54 » 03 janv. 2008, 07:01

PDO devrait être utilisé dans ton Modèle où les données sont récupérées et non dans une Action de ton Controlleur. Le Modèle se charge de récupérer les données. Le Controlleur n'a aucune idée du moyen de récupération des données utilisé par le Modèle. (XML, SQL, fichier texte, etc.)

Tu peux utiliser le design pattern Singleton (couplé à un Registre) pour instancier/récupérer ton unique instance de PDO. Le Singleton fait en sorte que ta classe ne pourra être instanciée qu'une seule fois. Si elle l'est déjà, son unique instance est retournée.

Quelqu'un me corrigera si j'ai fait une erreur dans mon explication.

PDO & MVC

par momox » 03 janv. 2008, 03:08

Bonsoir tout le monde, ou bonjour, au choix ;)
A l'heure des frameworks, de la POO, php5 &co, je m'interesse petit a petit a PDO, qui semble relativement puissant, mais il a surgi comme une question relativement simple, mais très compliquée pour moi a cette heure-ci:
Comment utiliser PDO dans le modéle MVC ?
Faut t'il a chaque "action" redéclarer une instance de PDO ?
J'avais construit le "core" de mes applications en faisant en sorte que les classes "model" héritent d'une classe abstraite qui consituait l'accès la base de données.
@+ et merci d'avance ;)