/** * cast - Return a new instance of a FacebookGraphObject subclass for this * objects underlying data. * * @param string $type The GraphObject subclass to cast to * * @return GraphObject * * @throws FacebookSDKException */ public function cast($type) { if ($this instanceof $type) { return $this; } if (is_subclass_of($type, GraphObject::className())) { return new $type($this->backingData); } else { throw new FacebookSDKException('Cannot cast to an object that is not a GraphObject subclass', 620); } }
/** * Returns an array of GraphObject returned by the request. If a type is * specified, returns the strongly-typed subclass of GraphObject for the data. * * @param string $type * * @return mixed */ public function getGraphObjectList($type = 'Facebook\\GraphObject') { $out = array(); $data = $this->responseData->data; for ($i = 0; $i < count($data); $i++) { $graph = new GraphObject($data[$i]); $out[] = $graph->cast($type); } return $out; }
/** * getPropertyAsArray - Get the list value of a named property for this graph * object, where each item has been cast to the appropriate subclass type * if provided. * * Calling this for a property that is not an array, the behavior * is undefined, so don’t do this. * * @param string $name The property to retrieve * @param string $type The subclass of GraphObject, optionally * * @return array */ public function getPropertyAsArray($name, $type = 'Facebook\\GraphObject') { $target = array(); if (isset($this->backingData[$name]['data'])) { $target = $this->backingData[$name]['data']; } else { if (isset($this->backingData[$name]) && !is_scalar($this->backingData[$name])) { $target = $this->backingData[$name]; } } $out = array(); foreach ($target as $key => $value) { if (is_scalar($value)) { $out[$key] = $value; } else { $graph = new GraphObject($value); $out[$key] = $graph->cast($type); } } return $out; }