0
私は多くのオブジェクトの間で共有された$sdk
オブジェクト参照(Facebook PHP SDK)を持っています。私はにアクセストークンを保存し、$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 { }