2016-07-30 125 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 –