我有自制包裝。通過服務提供商,我將$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謝謝,從方法聲明中刪除靜態解決它! –