我有一个自制的包裹。通过服务提供者,我将$app
实例传递给实际的类。然后我用:
$this->app['session']->get('key', 'value');
若要使用会话组件的功能,请执行以下操作。但是,当我运行这个程序时,我会得到以下错误:
在对象上下文中不使用$this
所以我试着用
Session::get( ... )
但上面写的是找不到那个班。
我该怎么解决这个问题?
这是我的全班:
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);
}
}
编辑:
显然,并不是每个人都明白这个问题:我是通过门面给信使打电话的:
Messenger::addMessage('test');
我还以为Laravel把这个换成了$app‘信使’->addMessage(‘test’);
所以不应该通过一个实例来调用它吗?
发布于 2013-05-29 21:03:46
您正在尝试从类中的静态方法调用$this
。这不管用。根据PHP (而且还因为它在其他方面很愚蠢),$this
只能在以下范围内使用:
$this->foo()
)调用的方法中__construct()
中)Callable
中,使用Runkit库重新定义了任何其他情况都会导致this
触发刚才收到的致命错误。我不能建议修复,因为您没有将代码放在上面-但是,如果您这样做了,我将非常乐意为您找到一个解决方案。
https://stackoverflow.com/questions/16823707
复制相似问题