web-dev-qa-db-fra.com

Comment accéder à cette propriété d'objet avec un nom composé?

J'utilise une classe PHP que quelqu'un a écrite pour se connecter à l'API BaseCamp.

L'appel que je fais est de récupérer les éléments d'une liste de tâches, ce qui fonctionne bien.

Mon problème est, je ne sais pas comment accéder seulement à la todo-items _ propriété de l'objet renvoyé. Voici le var_dump de l'objet retourné:

object(stdClass)[6]
  public 'completed-count' => string '0' (length=1)
  public 'description' => string 'Description String' (length=89)
  public 'id' => string '12345' (length=7)
  public 'milestone-id' => string '' (length=0)
  public 'name' => string 'Error Reports' (length=13)
  public 'position' => string '1' (length=1)
  public 'private' => string 'false' (length=5)
  public 'project-id' => string '58904' (length=7)
  public 'tracked' => string 'false' (length=5)
  public 'uncompleted-count' => string '1' (length=1)
  public 'todo-items' => 
    object(stdClass)[3]
      public 'todo-item' => 
        object(stdClass)[5]
          public 'completed' => string 'false' (length=5)
          public 'content' => string 'content string here' (length=133)
          public 'created-on' => string '2009-04-16T20:33:31Z' (length=20)
          public 'creator-id' => string '23423' (length=7)
          public 'id' => string '234' (length=8)
          public 'position' => string '1' (length=1)
          public 'responsible-party-id' => string '2844499' (length=7)
          public 'responsible-party-type' => string 'Person' (length=6)
          public 'todo-list-id' => string '234234' (length=7)
  public 'complete' => string 'false' (length=5)

Comment puis-je accéder au todo-items partie de cet objet?

108
Ian
<?php
$x = new StdClass();
$x->{'todo-list'} = 'fred';
var_dump($x);

Donc, $ object -> {'todo-list'} est le sous-objet. Si vous pouvez le définir comme cela, vous pouvez également le lire de la même manière.

Si vous voulez le convertir en un tableau, ce qui peut être un peu plus facilement (c’est-à-dire l’accès évident à $ ret ['todo-list']), ce code est pris presque intégralement de Zend_Config et sera converti pour vous.

public function toArray()
{
    $array = array();
    foreach ($this->_data as $key => $value) {
        if ($value instanceof StdClass) {
            $array[$key] = $value->toArray();
        } else {
            $array[$key] = $value;
        }
    }
    return $array;
}
237
Alister Bulman

Essayez ce moyen le plus simple!

$obj = $myobject->{'mydash-value'};
$objToArray = array($obj);
25
Nikunj Dhimar