У меня есть общая $sdk
ссылка на объект (это Facebook PHP SDK) между многими объектами. Мне нужно сохранить маркер доступа в самом начале вызова функции и восстановить после $this->sdk->api
вызова. Смотрите, например, getAlbums()
function.
Как автоматически выполнить обратный вызов до / после каждый вызов функции в каждом FBItem
экземпляре?
abstract class Item
{
protected $id, $sdk, $auth;
public function __construct(Facebook $sdk, $auth = null)
{ $this->sdk = $sdk; $this->auth = $auth; }
public function getAlbums() // Require access token change
{
// Am i FBUser or FBPage? Call setAccessToken to set auth
$backup = $this->sdk->getAccessToken();
$this->sdk->setAccessToken($auth ?: $backup);
$as = array();
$rs = $this->sdk->api(sprintf('/%s/albums', $this->id));
foreach($rs['data'] as $i) $as[] = new Album($this->sdk, $this->auth);
// Restore previous token backup
$this->sdk->setAccessToken($backup);
}
}
class User extends Item
{
$ps = array(); $rs = $this->sdk->api(sprintf('/%s/accounts', $this->id));
foreach($rs['data'] as $i) $ps[] = new Page($this->sdk, $i['access_token']);
return $ps;
}
class Page extends Item { }