Использование $ this, если не в объектном контексте – Laravel 4 PHP 5.4.12

Я пытался получить доступ к моему экземпляру на конструкторе с переменной $ this; Во всем другом методе это кажется хорошим, когда я вызываю $this->event->method() но по этому методу он вызывает ошибку

Использование $ this, если не в объектном контексте

Я только что сделал исследование по этой проблеме, и ответы, которые я нашел, касались версии PHP, но у меня есть версия 5.4. что может быть проблемой?

Это метод, который я пытаюсь вызвать экземпляр.

 // all protected variable $event , $team , $app function __construct(EventTeamInterface $event,TeamInterface $team) { $this->event = $event; $this->team = $team; $this->app = app(); } /** * @param $infos array() | * @return array() | ['status'] | ['msg'] | ['id'] */ public static function createEvent($infos = array()){ $create_event = $this->event->create($infos); if ($create_event) { $result['status'] = "success"; $result['id'] = $create_event->id; } else { $result['status'] = "error"; $result['msg'] = $create_event->errors(); } return $result; } 

Вы не можете использовать $this когда находитесь в статическом методе. Статические методы не знают о состоянии объекта. Вы можете ссылаться только на статические свойства и объекты, используя self:: . Если вы хотите использовать сам объект, вам нужно почувствовать, что вы вне класса, поэтому вам нужно сделать экземпляр одного, но это не сможет понять, что произошло раньше в объекте. Т.е. если какой-то метод изменил свойство $_x на некоторое значение, то при восстановлении объекта вы потеряете это значение.

Однако в вашем случае вы можете сделать

 $_this = new self; $_this->event->create($info); 

Вы также можете вызывать нестатические методы как static self::method() но в более новых версиях PHP вы получите ошибки для этого, поэтому лучше не делать этого.

Информацию об этом вы можете найти в официальной документации php: http://www.php.net/manual/en/language.oop5.static.php

Поскольку статические методы вызываются без экземпляра созданного объекта, псевдопеременная $ this недоступна внутри метода, объявленного как статический


Вызов нестатических методов статически генерирует предупреждение уровня E_STRICT.