Я пытался получить доступ к моему экземпляру на конструкторе с переменной $ this; Во всем другом методе это кажется хорошим, когда я вызываю $this->event->method()
но по этому методу он вызывает ошибку
Использование $ this, если не в объектном контексте
- Параметрированное привязка запроса в предложении ON для LEFT JOIN в Laravel Eloquent / Query Builder
- Ошибки проверки формы Parsley.js и Laravel
- Командам Artisan требуется другое имя хоста в db-config, чем сам Laravel
- Аутентификация пользователя через субдомены на локальном хосте
- Laravel 4 как получить маршруты по названию группы
Я только что сделал исследование по этой проблеме, и ответы, которые я нашел, касались версии 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.