我有一个自制的包裹。通过服务提供者,我将$app
实例传递给实际的类。然后我用:
$this->app['session']->get('key', 'value');
使用Session组件的功能。但是,当我运行它时,我收到以下错误:
不在对象上下文中时使用$ 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);
}
}
编辑:
显然不是每个人都明白这个问题:我通过Facade调用Messenger:
Messenger::addMessage('test');
我认为Laravel将此转换为 $应用[ '信使'] - >方法addMessage( '试验');
所以不应该通过实例调用它吗?
答案 0 :(得分:0)
您正尝试从班级中的静态方法调用$this
。这不行。通过PHP定义(也因为它是愚蠢的),$this
仅在以下范围内可用:
$this->foo()
)__construct()
内部)Callable
内部其他任何原因导致this
触发您刚刚收到的致命错误。我不能建议修复,因为你没有把你的代码 - 但是,如果你这样做,我将非常乐意为你找到一个解决方案。