직접 만든 패키지가 있습니다. 서비스 제공자와 함께 $app
인스턴스를 실제 클래스에 전달합니다. 그런 다음 세션 구성 요소 기능을 사용하려면패키지의 구성 요소를 조명하십시오.
$this->app['session']->get('key', 'value');
을 사용하십시오. 그래서 난 그냥
Session::get(...)
를 사용하여 시도
Using $this when not in object context
하지만 그것은 클래스를 찾을 수없는 말한다 : 그러나, 나는이 프로그램을 실행할 때, 나는 다음과 같은 오류가 발생합니다.
어떻게 해결할 수 있습니까?
이 내 전체 클래스 :
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 변환 생각 this to $ app [ 'messenger'] -> addMessage ('test');
인스턴스를 통해 호출하지 않아야합니까?
그래야하지만, 문제는 정적으로 메서드를 정의하고 있다는 것입니다. 이제'''$ app [ 'messenger'] -> addMessage ('test');''는 정적 호출이 아닌 인스턴스로부터의 호출이라고합니다. – crynobone
@crynobone 감사합니다. 메서드 선언에서 정적을 제거하여 해결했습니다! –