2016-11-06 1 views
2

Lorsque vous utilisez la bibliothèque php pour RTM (https://github.com/bartosz-maciaszek/php-rtm), je reçois une réponse pour un particulier des tâches liste comme ceci:Comment puis-je accéder à une clé de tableau protégée ayant un signe dollar dans un objet (réponse de RTM-php)?

[notes] => Rtm\DataContainer Object 

(
    [attributes:Rtm\DataContainer:private] => Array 
     (
      [note] => Rtm\DataContainer Object 
       (
        [attributes:Rtm\DataContainer:private] => Array 
         (
          [id] => 56254802 
          [created] => 2016-11-06T10:46:43Z 
          [modified] => 2016-11-06T10:49:26Z 
          [title] => null 
          [$t] => https://stackoverflow.com/questions/910912/extract-urls-from-text-in-php1 
         ) 

       ) 

     ) 

) 

Je peux obtenir la valeur de id, created, modified très bien, mais $t ne fonctionne pas.

$note_obj = $obj->getNotes()->getNote(); 
$note_id = $note_obj->getId(); 
echo "$note_id\n"; //works fine 

$note_content = $note_obj->get{'$t'}(); //doesn't work 
print_r($note_content); 

Il est évident que $note_obj->get{'$t'}; échoue ici ..... Alors, comment puis-je accéder ces données?

+0

try '$ note_obj -> {'get $ t'}();' – Dekel

+0

@Dekel Non. Cela n'a pas fonctionné non plus. 'PHP Erreur fatale: Uncaught BadMethodCallException: Méthode get $ t pas implémentée dans https://github.com/bartosz-maciaszek/php-rtm/blob/master/src/Rtm/DataContainer.php'..... [DataContainer.php] (https://github.com/bartosz-maciaszek/php-rtm/blob/master/src/Rtm/DataContainer.php) J'ai trouvé une méthode qui convertit un objet en tableau. Peut-être que c'est le chemin à parcourir. Je vais essayer de commenter ici. –

+0

Essayez 'var_dump (get_class_methods ($ note_obj));' pour voir si vous avez des méthodes spécifiques que vous pouvez utiliser pour obtenir toutes les valeurs. – Dekel

Répondre

0

J'ai découvert que toutes les méthodes de classes sont traitées par DataContainer.php qui a une méthode comme toArray pour convertir l'objet en tableau.

Ces méthodes peuvent également être exposés par (comme l'a souligné @Dekel dans le commentaire):

var_dump(get_class_methods($note_obj)); donne

array(10) { 
[0]=> 
string(11) "__construct" 
[1]=> 
string(11) "getIterator" 
[2]=> 
string(5) "count" 
[3]=> 
string(6) "__call" 
[4]=> 
string(3) "get" 
[5]=> 
string(3) "set" 
[6]=> 
string(3) "has" 
[7]=> 
string(6) "remove" 
[8]=> 
string(7) "toArray" 
[9]=> 
string(6) "toJson" 
} 

Et d'où le code est:

$note_obj = $obj->getNotes()->getNote(); 
$rtm_item_note_content = $note_obj->toArray(); 
$rtm_item_note_content = $rtm_item_note_content['$t']; 
echo "note content: $rtm_item_note_content\n"; 

Terminé !