D@RKWoodius | 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 :
- class Client {
- private $id, $prenom, $nom /*, ...*/;
- public __contruct($id, $prenom, $nom, /*, ...*/) {
- $this->id = $id;
- $this->prenom = $prenom;
- $this->nom = $nom;
- // ...
- }
-
- // Les méthodes statiques de récupération de tes données
- public static function recupererClientParId($id) {
- // ton code de récupération dans la base de donnée
- return new Client($retourBd["ID"], $retourBd["PRENOM"], $retourBd["NOM"] /*, ...*/);
- }
- // Eventuellement d'autres manières de récupérer un client ou un ensemble de client (recherche, ...)
- // La création d'un client (statique aussi pour des raisons évidentes)
- public static function creerClient($prenom, $nom /*, ...*/) {
- // le code d'insertion dans la bd + récupération de l'id de la ligne insérée
- return new Client($id, $prenom, $nom /*, ...*/);
- }
-
- // Eventuellement du code métier (par ex : public function changerEtatClient(),
- // ...
- // Les getters & setters qui vont bien
- public function getId() { return $this->id; }
- public function getNom() { return $this->nom; }
- public function getPrenom() { return $this->prenom; }
- public function setNom($nom) {
- // change dans la bd le nom du client pour la ligne qui répond à ID = $this->getId()
- }
- public function setPrenom($prenom) { /* comme au-dessus */ }
- }
|
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.
++ |