connaitre les propriétés d'un objet

connaitre les propriétés d'un objet - PHP - Programmation

Marsh Posté le 16-09-2010 à 11:16:25    

yop.
J'ai un objet dont les propriétés sont settées à la volée.  
Je voudrais la liste de ces propriétés.
 
Je fais donc:
 

Code :
  1. <?php
  2. class tutu{
  3.     protected $h = 'coucou';
  4.     public function setval($key,$val){
  5.         $this->$key = $val;
  6.     }
  7.  
  8. }
  9.  
  10. $t = new tutu();
  11. $t->setval('hello','world');
  12. /*output
  13. object(tutu)[1]
  14.  protected 'h' => string 'coucou' (length=6)
  15.  public 'hello' => string 'world' (length=5)
  16.  
  17. */
  18. $r = new ReflectionClass($t);
  19. var_dump($r->getProperties());
  20. /*output
  21. array
  22.  0 => &
  23.    object(ReflectionProperty)[3]
  24.      public 'name' => string 'h' (length=1)
  25.      public 'class' => string 'tutu' (length=4)
  26.  
  27. */


 
le ReflectionClass::getProperties() ne marche donc pas dans ce cas.
Comment je peux faire ?

Reply

Marsh Posté le 16-09-2010 à 11:16:25   

Reply

Marsh Posté le 16-09-2010 à 11:43:02    

Utilise plutôt __get et __set, avec stockage dans un tableau [:petrus dei]

Reply

Marsh Posté le 16-09-2010 à 11:46:52    

Je ne peux pas toucher à l'objet en question.
Sinon strop simple  [:petrus75]

Reply

Marsh Posté le 16-09-2010 à 11:56:48    

Y'a un moyen moche, c'est de caster en array :

Code :
  1. $tArray = (array)$t;
  2. var_dump($tArray);
  3.    
  4. foreach($tArray as $prop => $val) {
  5.     echo $prop, ' : ', $val, "\n"; 
  6. }

Reply

Marsh Posté le 16-09-2010 à 11:59:20    

Au passage, on voit comment php stocke les propriétés, sous forme d'array en fait, avec pour clé :
 

  • Propriété private : \0<nom de la classe>\0<nom de la prop>
  • Propriété protected : \0*\0<nom de la prop>
  • Propriété public : <nom de la prop>


[:moule_bite]

Reply

Marsh Posté le 16-09-2010 à 14:51:30    

Pourtant ce truc devrait être résolu depuis 2006  [:pingouino]  
http://bugs.php.net/bug.php?id=37682

Reply

Marsh Posté le 16-09-2010 à 15:06:33    

T'as quoi comme version de PHP :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 16-09-2010 à 15:34:49    

5.3.1 :d

Reply

Marsh Posté le 16-09-2010 à 15:46:43    

En effet ... surprenant ... Demande sur la mailling :spamafote:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 16-09-2010 à 16:01:22    

C'est où la mailling list ?  [:mariocompiegne]

Reply

Marsh Posté le 16-09-2010 à 16:01:22   

Reply

Marsh Posté le 16-09-2010 à 21:22:16    

http://www.php.net/mailing-lists.php
 
Faut ouvrir les zieux quand même :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 17-09-2010 à 00:59:04    

Reply

Marsh Posté le 17-09-2010 à 10:06:04    

[:shimay:1]

Reply

Marsh Posté le 20-09-2010 à 15:14:24    


Je lisais le topic quand je me demandais qui allait enfin la sortir :)

Spoiler :

Alleluja !

Reply

Sujets relatifs:

Leave a Replay

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