我有自制包装。通过服务提供商,我将$app
实例传递给实际的类。然后我使用:照亮包装中的组件
$this->app['session']->get('key', 'value');
使用会话组件的功能。
Using $this when not in object context
所以我尝试只用
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 ['messenger'] - > addMessage('test');
所以不应该通过实例调用?
它应该,但你的问题是,你正在将你的方法定义为静态。现在,当'''$ app ['messenger'] - > addMessage('test');'''被称为来自实例的调用时,不再是静态调用。 – crynobone
@crynobone谢谢,从方法声明中删除静态解决它! –