【问题标题】:How to add a global accessible variable for Phalcon Micro framework?如何为 Phalcon Micro 框架添加全局可访问变量?
【发布时间】:2016-07-30 14:47:19
【问题描述】:

我是 PHP Phalcon 的新手,我正在创建一个简单的 REST API 后端,我现在遇到了一个问题。

//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

【问题讨论】:

  • 如果控制器 B 扩展控制器 A,这应该可以工作。但是按照您描述的方式,这是不可能的。我猜您正在寻找类似 Sessions 行为的东西,但不完全是;)如果将该变量添加到 $di 您将能够访问它。
  • 是的,它会喜欢会话行为,但是这个变量在所有会话中都是一样的/
  • 其他控制器(postcontroller)是否从同一个请求访问它?还是在另一个页面上

标签: php variables global phalcon


【解决方案1】:

当你向依赖注入器添加一些东西时,你需要通过 di 调用它。这就是为什么你应该尝试在你的第二个控制器中使用$access_token = $this->di->currentWeixinAccessToken。默认情况下,可以从完整的 Phalcon 控制器访问 Di,我不确定微型版本如何。如果不起作用,您可以尝试使用\Phalcon\Di::getDefault()->currentWeixinAccessToken\Phalcon\Di::getDefault()->get('currentWeixinAccessToken')

【讨论】:

  • @tomriddle_1234 如果成功,请将帖子标记为答案
  • 不幸的是,我试过了,它不起作用...在依赖注入容器中找不到服务'currentWeixinAccessToken',未定义属性:Phalcon\Di\FactoryDe​​fault::$currentWeixinAccessToken
  • 你用错了。使用我在答案中写的确切行之一,例如 \Phalcon\Di::getDefault()->currentWeixinAccessToken\Phalcon\Di::getDefault()->get('currentWeixinAccessToken')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 2014-09-23
  • 2015-03-30
  • 2012-10-11
相关资源
最近更新 更多