2017-02-10 3 views
0

Я просто напечатать facebook апи resonseКак пройти этот объект PHP

print_r($response) 

выход

Facebook\GraphNodes\GraphEdge Object 
(
[request:protected] => Facebook\FacebookRequest Object 
    (
     [app:protected] => Facebook\FacebookApp Object 
      (
       [id:protected] => secret 
       [secret:protected] => secret 
      ) 

     [accessToken:protected] => secret 
     [method:protected] => GET 
     [endpoint:protected] => /search?q=co&type=page 
     [headers:protected] => Array 
      (
       [Content-Type] => application/x-www-form-urlencoded 
      ) 

     [params:protected] => Array 
      (
      ) 

     [files:protected] => Array 
      (
      ) 

     [eTag:protected] => 
     [graphVersion:protected] => v2.5 
    ) 

[metaData:protected] => Array 
    (
     [paging] => Array 
      (
       [cursors] => Array 
        (
         [before] => MAZDZD 
         [after] => MjQZD 
        ) 

       [next] => https://graph.facebook.com/v2.8/search?access_token=EAAafvw8PPA4BACHY8V6GDpbzMbtRlZC7dZCRnOGtO26Yc4g4yWWvqZCsMBPOWO3b72n2JPjXP8KD91ZCMXMAcARGUsk5cNShhy5LxOmj0Gz4ZA2ESzPZAd4VzBCpdZATCZBvZCOkAIxBd1gXBzkMY0DheyjruSlMHEPbbuVuTY350wgZDZD&q=co&type=page&limit=25&after=MjQZD 
      ) 

    ) 

[parentEdgeEndpoint:protected] => 
[subclassName:protected] => 
[items:protected] => Array 
    (
     [0] => Facebook\GraphNodes\GraphNode Object 
      (
       [items:protected] => Array 
        (
         [name] => SC Corinthians Paulista 
         [id] => 132769576762243 
        ) 

      ) 

     [1] => Facebook\GraphNodes\GraphNode Object 
      (
       [items:protected] => Array 
        (
         [name] => Miranda Cosgrove 
         [id] => 9934379006 
        ) 

Я хочу получить доступ к [items:protected] массив .Но я не могу найти, как получить их

Я попробовал

$ items_array = $ response-> items: protected;

Но это не работает, пожалуйста, помогите мне. Я хочу получить этот массив и перебрать его

+1

Вы не можете получить доступ к защищенным типы данных –

+0

действительно, не так? @MASIDDIQUI – beginner

+0

Я полагаю, вы можете перебирать элементы с помощью простого 'foreach', как показано здесь: https://developers.facebook.com/docs/php/GraphEdge/5.0.0 –

ответ

1

Если он защищен, значит, вы не можете получить доступ извне. Я предлагаю вам взглянуть в класс Facebook \ FacebookRequest, если есть общедоступный метод, который предоставляет вам элементы, иначе вы не сможете получить доступ к этому.

1

Facebook PHP апите предлагает простой foreach получить узлы:

foreach ($response as $graphNode) { 
    print_r($graphNode); 
} 

Как работать с GraphNode объекта описан here.

0

Вы можете найти исходный код этого объекта в facebook GitHub репо: Facebook/GraphNodes/GraphEdge

GraphEdge расширяет Collection, который реализует ArrayAccess и IteratorAggregate

Итератор сделан на $ предметы свойства ...

/** 
* Get an iterator for the items. 
* 
* @return ArrayIterator 
*/ 
public function getIterator() 
{ 
    return new ArrayIterator($this->items); 
} 

Тогда да, используя простой foreach должен работать

1

Вы можете перемещать этот объект с помощью нескольких различных методов:

(Рекомендуемая методика :) Вы можете использовать методы объекта GraphNode для вывода элементов одновременно, перейдя через объект GraphEdge, чтобы получить GraphNode и вызвать «asJson»()»или 'asArray() на нем:

foreach($response as $node){ 
    //Print as json 
    print($node->asJson()); 

    //Print as array 
    print_r($node->asArray()); 
} 

есть другие способы доступа к свойствам объекта GraphNode, таким как„ПолучитьПолеЗаголовок“и„getFieldNames“, если вы хотите только получить конкретный элемент данных и не хотите возвращать все это (вы можете прочитать о них здесь: https://developers.facebook.com/docs/php/GraphNode/5.0.0)

(Также работает :) Или вы можете использовать вложенные петли foreach (согласно документам здесь: https://developers.facebook.com/docs/php/GraphEdge/5.0.0).

Что-то вдоль линий:

foreach ($response as $node) { 
    //each item returned by response 
    foreach ($node as $itemKey => $itemValue) { 
     //each item within the node 
     print $itemKey.' is '.$itemValue; 
    } 
} 
Смежные вопросы