2016-07-30 74 views
1

我是PHP Phalcon的新手,我正在創建一個簡單的REST API後端,現在我遇到了一個問題。如何爲Phalcon Micro框架添加全局可訪問變量?

//define $app in index.php 
$app = new Micro($di) ; 

在一個控制器中,我試圖至少在控制器之間定義(添加)全局可訪問變量。

//However, the followings are all not working. 
$this->currentWeixinAccessToken = $access_token ; 
$this->getDI()->setShared('currentWeixinAccessToken', $access_token); 
$this->$currentWeixinAccessToken = $access_token; 
$this->di->setShared('currentWeixinAccessToken', $access_token) ; 

他們能夠無差錯地定義,但是當我使用他們的另一個控制器,

$access_token = $this->currentWeixinAccessToken; 

的錯誤是,

[Sat Jul 30 22:10:20 2016] PHP Notice: Access to undefined property currentWeixinAccessToken in /home/tom/src/phalcontest/app/controllers/PostsController.php on line 48 

而且我發現一些答案在這裏,但他們不適合我。 Cross controller variables in Phalcon

+0

如果控制器B擴展控制器A,這應該工作。但是按照你描述的方式,這是不可能的。我猜你正在尋找類似Sessions的行爲,但不完全;) 如果該變量被添加到$ di,您將能夠訪問它。 –

+0

是的,它會喜歡會話行爲,但是這個變量在所有會話中都是相同的/ –

+0

其他控制器(後控制器)是否從相同請求訪問它?或者它是在另一頁 –

回答

1

當你添加一些東西到依賴注入器時,你需要通過di調用它。這就是爲什麼你應該嘗試在你的第二個控制器中使用$access_token = $this->di->currentWeixinAccessToken。 Di在默認情況下可以從控制器訪問Phalcon,我不確定微型版本是什麼。如果它不起作用,你可以嘗試使用\Phalcon\Di::getDefault()->currentWeixinAccessToken\Phalcon\Di::getDefault()->get('currentWeixinAccessToken')

+0

非常感謝,好主意,讓我試試 –

+0

@ tomriddle_1234請標記帖子爲答案,如果它成功了 – Luke

+0

不幸的是,我試過這個,它不工作...服務'currentWeixinAccessToken'wasn' t在依賴注入容器中發現,未定義的屬性:Phalcon \ Di \ FactoryDe​​fault :: $ currentWeixinAccessToken –