[PHP 5.2.6] Problème sur le 'return' d'une fonction
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 :
Code:
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;
} |
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:
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;
} |
Cette fonction retourne un objet chargé depuis ma base de donnée, tout marche, seulement,
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 :
Code:
1 2 3 4
| public function GetDistributeur($idDistributeur)
{
return PersistanceSQL::ChargerDepuisBase($idDistributeur, 'Distributeur');
} |
Puis cette fonction est appelée par un objet comme ceci :
Code:
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; |
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.
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.