Issue
For example a request like
$request = new FacebookRequest($session, 'GET','/me/accounts?fields=id,name,access_token');
$response = $request->execute();
$arrayResult = $response->getGraphObject()->asArray();
print_r($arrayResult);
returns
Array (
[data] => Array (
[0] => stdClass Object (
[id] => 01010011100001111000111 #it's a fake id
[name] => MyAwesomePageName #And a fake name
)
)
[paging] => stdClass Object (
[next] => https://graph.facebook.com/v2.0/01010011100001111000111/accounts?fields=id,name&access_token=RanDoMAndFaaKKeEACCessToKen&limit=5000&offset=5000&__after_id=enc_IdOnOTKnoWWhAtThiSIs
)
)
Thats is. I would like to retrieve all the response in array and without theses stdClass objects. Just like it was in the previous version of their api. Thanks.
Solution
The Facebook SDK's asArray() method is limited as you've discovered. However, you can manually convert an object to an array using the get_object_vars( $object );
function. In your example, you can do something like:
$array = get_object_vars( $arrayResult['data'][0] );
This will convert the page Object into an array. The function isn't recursive, so you'll need to convert each object to an array.
You can use a recursive function like this:
function object_to_array($obj) {
$arr = array();
if($obj instanceOf GraphObject){
if(is_scalar($obj->asArray()) )
$arr = $obj->asArray();
else{
foreach ($obj->getPropertyNames() as $propName) {
$arr[$propName] = object_to_array($obj->getProperty($propName));
}
}
}else if(is_array($obj)){
foreach ($obj as $propKey => $propValue) {
$arr[$propKey] = object_to_array($obj[$propValue]);
}
}else $arr = $obj;
return $arr;
}
Answered By - Niraj Shah
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.