У меня есть общая ссылка объекта $sdk
(это PHP SDK для PHP) между многими объектами. Мне нужно сохранить токен доступа в самом начале вызова функции и восстановить после вызова $this->sdk->api
. См. Например, getAlbums()
функция.Выполнение обратного вызова до и после вызова метода каждого экземпляра?
Как автоматически может выполнить обратный вызов до/после каждой функции вызова на каждом 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 { }