Bonjour/Bonsoir à tous !
Je me présente, je m'appelle Arnaud, étudiant en BTS IG et je viens quérir votre aide.
En effet, je suis actuellement en train de développer un service web mais qui n'utilise pas le WSDL ou SOAP. C'est un service web réalisé à partir d'une étude de cas tombé à l'examen du BTS IG.
C'est un service web en PHP5, et débutant sur la POO, je bloque sur quelques points que je n'arrive pas à comprendre/corriger.
Tout d'abord, pour me connecter à ma base de donnée, j'utilise PDO en respectant le Singleton :
La connection est bien établit, sa, il n'y a pas de soucis, la ou il y a un problème c'est ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 class PersistanceSQL { private $type = 'xx'; private $serveur = 'xx'; private $nomBaseDonnee = 'xx'; private $user = 'xx'; private $password = 'xx'; private $PDOConnexion; private static $instance; private $instance2; private function __construct() { try { // Connexion à la base de données. $this->PDOConnexion = new PDO($this->type.':host='.$this->serveur.';dbname='.$this->nomBaseDonnee, $this->user, $this->password); // Configuration du pilote pour obtenir des exceptions. $this->PDOConnexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(Exception $e) { echo 'Erreur : ' . $e->getMessage(); } } // Regarde si un objet connexion a déjà été instancier, si c'est le cas alors il retourne l'objet déjà existant. // Sinon il en créer un autre. public static function GetInstance() { // La commande self fait référence à la classe actuelle. // Instanceof permet de savoir si un objet est d'une certaine classe. if (!self::$instance instanceof PersistanceSQL) { self::$instance = new PersistanceSQL(); } return self::$instance; } // Permet de récuprer l'objet PDO permettant de manipuler la base de donnée. public function GetPDOConnexion() { return $this->PDOConnexion; }
Cette fonction retourne un objet chargé depuis ma base de donnée, tout marche, seulement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 public function ChargerDepuisBase($idDistributeur = null, $nomClasse) { $this->idDistributeur = $idDistributeur; $objet = PersistanceSQL::GetInstance(); $connexion = $objet->GetPDOConnexion(); $requete = $connexion->query('SELECT * FROM distributeur, commande, produit WHERE commande.IDDISTRIBUTEUR = "' . $this->idDistributeur . '" AND commande.IDDISTRIBUTEUR = distributeur.IDDISTRIBUTEUR AND commande.IDPRODUIT = produit.IDPRODUIT'); while ($donnees = $requete->fetch(PDO::FETCH_ASSOC)) { if (!($instance2 instanceof $nomClasse)) { $instance2 = new $nomClasse($this->idDistributeur, $donnees['NOM']); } $instance2->NOM = $donnees['NOM']; $instance2->IDCOMMANDE = $donnees['IDCOMMANDE']; $instance2->IDDISTRIBUTEUR = $donnees['IDDISTRIBUTEUR']; $instance2->IDPRODUIT = $donnees['IDPRODUIT']; $instance2->PRIXHT = $donnees['PRIXHT']; $instance2->CONDITIONNEMENT = $donnees['CONDITIONNEMENT']; $instance2->QUANTITE = $donnees['QUANTITE']; $instance2->DATECONDITIONNEMENT = $donnees['DATECONDITIONNEMENT']; $instance2->DATEENVOI = $donnees['DATEENVOI']; $instance2->VARIETE = $donnees['VARIETE']; $instance2->TYPEPRODUIT = $donnees['TYPEPRODUIT']; $instance2->CALIBRE = $donnees['CALIBRE']; } return $instance2; }
j'appelle cette fonction dans une autre fonction et là, je n'arrive pas à récuperer l'objet retourner et en plus de cela, je n'arrive pas à le re-retourner encore une fois cette objet (ceci est mon problème >_<),
comme ceci :
Puis cette fonction est appelée par un objet comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public function GetDistributeur($idDistributeur) { return PersistanceSQL::ChargerDepuisBase($idDistributeur, 'Distributeur'); }
Cependant, rien ne s'affiche et je ne sais pas d'où proviens mon erreur (ou mes erreurs), c'est pourquoi je vous demande votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $objet = PersistanceSQL::GetInstance(); $connexion = $objet->GetPDOConnexion(); $gestCmd = new GestionCommandes($connexion); $leDistributeur = new Distributeur(1, 'carreclerc'); $leDistributeur = $gestCmd->GetDistributeur(1); echo $leDistributeur;
J'espère avoir été assez clair et que vous pourrez m'aider à résoudre ce problème qui dure depuis plusieurs jours déjà >_<
Je vous remercie par avance et je vous souhaite de passer une très bonne journée !
Très cordialement,
Habuu.
Partager