首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >封装照明组件

封装照明组件
EN

Stack Overflow用户
提问于 2013-05-29 21:00:14
回答 1查看 368关注 0票数 0

我有一个自制的包裹。通过服务提供者,我将$app实例传递给实际的类。然后我用:

代码语言:javascript
运行
复制
$this->app['session']->get('key', 'value');

若要使用会话组件的功能,请执行以下操作。但是,当我运行这个程序时,我会得到以下错误:

在对象上下文中不使用$this

所以我试着用

代码语言:javascript
运行
复制
Session::get( ... )

但上面写的是找不到那个班。

我该怎么解决这个问题?

这是我的全班:

代码语言:javascript
运行
复制
namespace AlexCogn\Messenger;

use Illuminate\Foundation\Application as Application;

    class Messenger
    {
    protected $app;

    public function __construct(Application $app)
    {
        $this->app = $app;
    }

    public static function messages()
    {
         $messages = $this->app['session']->get('messages', array());

         $this->app['session']->forget('messages');

         return $messages;
    }

    public function addMessage($message)
    {
         $messages = $this->app['session']->get('messages', array());
         array_push($messages, $message);

         $this->app['session']->put('messages', $messages);
    }
}

编辑:

显然,并不是每个人都明白这个问题:我是通过门面给信使打电话的:

代码语言:javascript
运行
复制
Messenger::addMessage('test');

我还以为Laravel把这个换成了$app‘信使’->addMessage(‘test’);

所以不应该通过一个实例来调用它吗?

EN

回答 1

Stack Overflow用户

发布于 2013-05-29 21:03:46

您正在尝试从类中的静态方法调用$this。这不管用。根据PHP (而且还因为它在其他方面很愚蠢),$this只能在以下范围内使用:

  • 在通过实例(即$this->foo())调用的方法中
  • 在类构造函数中(在__construct()中)
  • Callable中,使用Runkit库重新定义了

任何其他情况都会导致this触发刚才收到的致命错误。我不能建议修复,因为您没有将代码放在上面-但是,如果您这样做了,我将非常乐意为您找到一个解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16823707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档