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

  FORUM HardWare.fr
  Programmation
  PHP

  Quoi envoyer aux classes "Sql" ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Quoi envoyer aux classes "Sql" ?

n°2296015
kontas
Photographe amateur daltonien
Posté le 08-02-2017 à 13:30:58  profilanswer
 

Salut à tous,
 
J'aurais aimé avoir votre avis sur les bonnes pratiques en programmation orienté objet.
 
Actuellement j'ai des classes que l'on dira métiers qui manipule et affiche les données, pour chacune de ces classes métiers, j'ai un équivalent en classe Sql qui sera charger de faire les requetes et renvoyer des tableau bruts de résultats. Quand j'ai besoin d'insérer des données, je passe mon objet entier à une méthode de ma classe Sql.
 
Récemment en mettant à jours mon serveur php, je me suis retrouvé avec des warning ****Only variables should be passed by reference in****
 
car je faisais cela dans mes classe Sql :
 
 

Code :
  1. public function insert($objet){
  2.         $query   = "INSERT INTO maTable (Id,monChamp) VALUES (:id,:monChamp)";
  3.         $prep    = $this->pdo->prepare($query);
  4.         $prep->bindParam(':id', $objet->getId(), PDO::PARAM_INT);
  5.         $prep->bindParam(':monChamp', $objet->getMonChamp(), PDO::PARAM_STR);
  6.         try {
  7.             $prep->execute();
  8.             return $this->pdo->lastInsertId();
  9.         } catch (PDOException $e) {
  10.             conn::setErreur($e);
  11.             return false;
  12.         }
  13.     }


 
Le Warning vient du fait qu'il ne serais pas recommandé de manipuler un objet à l'intérieur de la méthode BindParam de pdo. Et c'est bien dommage car je trouvais cela bien pratique. car ca eviter de déclarer de nouvelles variable le temps de l'insertion des données, mais également la facilité à l'écriture grace à un bon ide.
 
Donc si il n'est pas recommander de faire ca, sous quelle forme est t'il conseillé de faire passer les données aux méthodes Sql ?
 
 
 

Code :
  1. public function insert($objet){
  2.  $id = $objet->getId();
  3.         $monChamp = $objet->getMonChamp();
  4.        
  5.         $query   = "INSERT INTO maTable (Id,monChamp) VALUES (:id,:monChamp)";
  6.         $prep    = $this->pdo->prepare($query);
  7.         $prep->bindParam(':id', $id, PDO::PARAM_INT);
  8.         $prep->bindParam(':monChamp', $MonChamp, PDO::PARAM_STR);
  9.         try {
  10.             $prep->execute();
  11.             return $this->pdo->lastInsertId();
  12.         } catch (PDOException $e) {
  13.             conn::setErreur($e);
  14.             return false;
  15.         }
  16.     }


 
 
ou encore, sachant pour pour les grosse requete ca va par être très lisible je trouve
 

Code :
  1. public function insert($id,$objet){
  2.        
  3.         $query   = "INSERT INTO maTable (Id,monChamp) VALUES (:id,:monChamp)";
  4.         $prep    = $this->pdo->prepare($query);
  5.         $prep->bindParam(':id', $id, PDO::PARAM_INT);
  6.         $prep->bindParam(':monChamp', $MonChamp, PDO::PARAM_STR);
  7.         try {
  8.             $prep->execute();
  9.             return $this->pdo->lastInsertId();
  10.         } catch (PDOException $e) {
  11.             conn::setErreur($e);
  12.             return false;
  13.         }
  14.     }


 
 
Petite question bonus sur la manière dont sont renvoyé les donnée, mieux vaut les renvoyer sous forme de tableau brut, ou bien utiliser la fonction PDO::FETCH_CLASS: qui créera automatiquement un objet hydraté de la classe renseigné ?
 
Merci de votre aide :)
 
 
 
 
 
 
 
 
 
 
 

mood
Publicité
Posté le 08-02-2017 à 13:30:58  profilanswer
 


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

  Quoi envoyer aux classes "Sql" ?

 

Sujets relatifs
[SQL] Group by relouRechercher une chaine qui ressemble à une autre en SQL
SQL Requete UnionSQL Server ou SQL Express ?
Probleme version de Wamp : SQL, PHP, et surtout de moiclasses en c++
Sql server un champ avec 3 choix[SQL] Programme gratuit pour tester des requêtes SQL
[SQL Server / Cobol GCOS] Insert Varchar sans espace[SQL] Question sur une requête
Plus de sujets relatifs à : Quoi envoyer aux classes "Sql" ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR