Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2956 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Découpage en services / dao ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Découpage en services / dao ?

n°1947164
kolbek
Posté le 03-12-2009 à 23:52:36  profilanswer
 

Bonjour,
 
Quelqu'un aurait il un exemple de structure pour un projet php découpé en couches services, dao ?  
 
(comme en java quoi...)
 
Avec éventuellement un exemple d'une classe service et d'une classe de dao ?
 
Merci d'avance.


---------------
Mon topic de vente http://forum.hardware.fr/hfr/Achat [...] 9217_1.htm  -- Mon Feed-Back : http://forum.hardware.fr/hfr/Achat [...] 0553_1.htm
mood
Publicité
Posté le 03-12-2009 à 23:52:36  profilanswer
 

n°1947218
FoxLeRenar​d
Posté le 04-12-2009 à 10:07:29  profilanswer
 

kolbek a écrit :

Bonjour,
Quelqu'un aurait il un exemple de structure pour un projet php découpé en couches services, dao ?  
(comme en java quoi...)
Avec éventuellement un exemple d'une classe service et d'une classe de dao ?
Merci d'avance.


 
Non le concepte de DAO n'a pas sa place dans le PHP puisque le PHP n'est pas en lien directe avec le visiteur, celui-ci ne recevant
que le HTML résultant de différtents critéres et éléments dont efectivement des données issues en locurence de Mysql ou autre.
Mais une structure de type "Data Access Object" n'a rien a faire ici.  

n°1947729
D@RKWoodiu​s
Posté le 06-12-2009 à 20:53:01  profilanswer
 

Une architecture de type SOA peut très bien être mise en place en PHP, cependant ce n'est pas forcément le meilleur choix. Si ta vue/couche présentation est en HTML, j'aurais plutôt tendance à te conseiller une archi type MVC.
 
Par contre, si ton client est en JavaScript / GWT / Flex, là il est effectivement judicieux de découper ton appli en services.
 
Les classes de ta couche DAO pourraient ressembler à ça (utilisons un cas d'école!) :
 

Code :
  1. class Client {
  2.     private $id, $prenom, $nom /*, ...*/;
  3.     public __contruct($id, $prenom, $nom, /*, ...*/) {
  4.         $this->id = $id;
  5.         $this->prenom = $prenom;
  6.         $this->nom = $nom;
  7.         // ...
  8.     }
  9.    
  10.     // Les méthodes statiques de récupération de tes données
  11.     public static function recupererClientParId($id) {
  12.         // ton code de récupération dans la base de donnée
  13.         return new Client($retourBd["ID"], $retourBd["PRENOM"], $retourBd["NOM"] /*, ...*/);
  14.     }
  15.     // Eventuellement d'autres manières de récupérer un client ou un ensemble de client (recherche, ...)
  16.     // La création d'un client (statique aussi pour des raisons évidentes)
  17.     public static function creerClient($prenom, $nom /*, ...*/) {
  18.         // le code d'insertion dans la bd + récupération de l'id de la ligne insérée
  19.         return new Client($id, $prenom, $nom /*, ...*/);
  20.     }
  21.    
  22.     // Eventuellement du code métier (par ex : public function changerEtatClient(),  
  23.     // ...
  24.     // Les getters & setters qui vont bien
  25.     public function getId() { return $this->id; }
  26.     public function getNom() { return $this->nom; }
  27.     public function getPrenom() { return $this->prenom; }
  28.     public function setNom($nom) {
  29.         // change dans la bd le nom du client pour la ligne qui répond à ID = $this->getId()
  30.     }
  31.     public function setPrenom($prenom) { /* comme au-dessus */ }
  32. }


 
En gros, tu recrées un mécanisme de mapping objet<->relationnel.
 
Et dans ton service au-dessus qui va écouter les requêtes HTTP (équivalent à une servlet java), si tu as besoin de faire des opérations sur tes données tu fais juste un truc du style :
$client = Client::recupererClientParId($_POST["idclient"]);
$client->setNom($_POST["nouveaunom"]);
echo $reponse; // au format que comprend ta couche Présentation (XML, JSON, ...)
 
Et si tu veux encore plus d'abstraction, tu peux mettre ton code purement métier dans une couche distincte entre les 2.
 
++

n°1953095
bouba331
Posté le 24-12-2009 à 16:23:56  profilanswer
 

FoxLeRenard a écrit :

 

Non le concepte de DAO n'a pas sa place dans le PHP puisque le PHP n'est pas en lien directe avec le visiteur, celui-ci ne recevant
que le HTML résultant de différtents critéres et éléments dont efectivement des données issues en locurence de Mysql ou autre.
Mais une structure de type "Data Access Object" n'a rien a faire ici.

 

Le concept de DAO a tout à fait sa place en PHP, il n'y a pas de raisons de ne pas appliquer le modèle Service / DAO / Modèle de données classique Java au PHP.
Les classes de DAOs permettent généralement de ne manipuler qu'un seul type d'entité, leurs opérations sont non-transactionnelles dans la plupart des cas.
Les classes de services sont transactionnelles et peuvent utiliser plusieurs DAOs gérant plusieurs types d'entités, ceci afin d'accomplir des opérations métiers à plus grosse granularité.


Message édité par bouba331 le 24-12-2009 à 16:58:51
n°1953096
bouba331
Posté le 24-12-2009 à 16:30:26  profilanswer
 

D@RKWoodius a écrit :


Une architecture de type SOA peut très bien être mise en place en PHP, cependant ce n'est pas forcément le meilleur choix. Si ta vue/couche présentation est en HTML, j'aurais plutôt tendance à te conseiller une archi type MVC.

 

Par contre, si ton client est en JavaScript / GWT / Flex, là il est effectivement judicieux de découper ton appli en services.

 

Désolé de corriger encore mais je ne suis pas d'accord là non plus.

 

Les architectures SOA n'ont pas vraiment de rapport ici (bien qu'un service SOA pourrait très bien être un service issu du modèle Service / DAO / Modèle de données...).
Aussi, le MVC peut très bien être mixé avec le modèle Service / DAO / Modèle de données.

 

kolbek, j'ai écrit un petit article récemment su mon blog concernant le développement d'une application PHP / Zend en respectant le modèle Service / DAO / Modèle de données (http://bgaillard.blogspot.com/2009 [...] on-le.html). Je ne sais pas si tout est très bien expliqué donc si tu as des questions n'hésites pas.

 

Bonne lecture et à très bientôt  :)  


Message édité par bouba331 le 24-12-2009 à 16:59:23

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Découpage en services / dao ?

 

Sujets relatifs
[Résolu] Découpage d'une chaine de caractèresutilisation Reporting Services en Intranet
SQL Server Reporting Services - Ecrire dans une base de donnéesSQL Server Reporting Services - Utilisation d'une table matrice
[RESOLU] Découpage de chaineComparatif services de géolocalisation Internet ? ou trouvez cela ?
Analysis Services : Distinct countUtilisation des HS ( Heterogeneous Services )
Web services en JavaSQL reporting services, exporter rapport => XLS
Plus de sujets relatifs à : Découpage en services / dao ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)