Récupérer les propriétés d'un objet dans un autre objet

Récupérer les propriétés d'un objet dans un autre objet - PHP - Programmation

Marsh Posté le 01-10-2010 à 17:41:21    

Bonjour,
 
Étant débutant en POO, je pense que la solution que j'utilise pour arriver à faire ce que je veux est pourri et qu'il existe une bien meilleure solution.
 
J'ai fait une class pour gérer mes connexions mysqli.
Ce que je cherche à faire, c'est de créer une propriété dans ma class pour chaque propriété de mon objet resultat de la requête mysqli. J'arrive à le faire mais en transformant l'objet resultat en tableau ce qui a mon avis n'est pas la bonne solution.
 
Je pense qu'on peux faire de l'héritage mais comment le faire alors que :
- ma class parent dont je devrais hériter est défini à l'intérieur de ma class enfant.
- je ne connais pas les noms des propriétés de la class parent.
 

Code :
  1. class A
  2.     function __construct($sqlquery)
  3.     {
  4.         global $mysqli;
  5.         $this->result = $mysqli->query($sqlquery);
  6.     }
  7.     function suivant()
  8.     {
  9.         if(is_object($this->result) && $db = $this->result->fetch_object())   
  10.         // si j'ai bien un résultat je met l'objet dans $db
  11.         {
  12.             $tableauDB = get_object_vars($db);    // je transforme l'objet en tableau
  13.             while( key($tableauDB) <> NULL )        // pour chaque ligne du tableau
  14.             {
  15.                 $clef = key($tableauDB);
  16.                 $this->$clef = current($tableauDB);    // je crée une propriété à mon objet
  17.                 next($tableauDB);
  18.             }
  19.             return true;
  20.         }
  21.         else
  22.         {
  23.             return false;
  24.         }
  25.     }


Message édité par belgarion le 01-10-2010 à 21:35:22
Reply

Marsh Posté le 01-10-2010 à 17:41:21   

Reply

Marsh Posté le 01-10-2010 à 22:29:17    

pourquoi : $tableauDB = get_object_vars($db);
autant faire  fetch_assoc()

 

et ta boucle est bien compliquer pour ce qu'elle devrai etre

 
Code :
  1. function suivant()
  2. {
  3.    if(is_object($this->result) && $db = $this->result->fetch_assoc())      
  4.    {    
  5.        foreach($db as $key => $value)
  6.        {
  7.            $this->$key = $value;
  8.        }          
  9.        return true;        
  10.    }
  11.    else
  12.    {
  13.        return false;
  14.    }
  15. }


Message édité par stealth35 le 01-10-2010 à 22:30:12
Reply

Marsh Posté le 02-10-2010 à 15:47:35    

ne faut-il pas créer une méthode "magic" __set et son frére __get  pour faire ça :??:


---------------
Tout à commencé par un rêve...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed