我有一个自制的包。通过服务提供者,我将$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 将其转换为 $app['messenger']->addMessage('test');
那么这不应该通过实例调用吗?