В yoyo.php
:
class Yoyo {
public $data;
}
В global.php
:
App::singleton('yoyo', function()
{
return new Yoyo;
});
В filters.php
:
$a= App::make('yoyo');
$a->data = 'yep';
В контроллере:
public function doSomething() {
dd(App::make('yoyo'));
}
В filters.php
Я могу получить доступ к data
свойство и имеет ожидаемое значение.
В контроллере dd
помощник показывает, что data
свойство null
,
Фильтр выполняется до вызова метода контроллера.
Почему $data
null
?
Это из-за того, как Laravel загружает файлы. Первый filters.php
выполняется, а затем global.php
поэтому сначала вы создаете нормальный объект, а затем синглтон. Если вы двигаетесь:
$a= App::make('yoyo');
$a->data = 'yep';
в global.php
после создания синглтона вы получите ожидаемый результат:
object (Yoyo) # 247 (1) {[«data»] => string (3) «yep»}
Хорошо, полная ошибка с моей стороны. Произошло перенаправление, поэтому контроллер фактически выполнял новый запрос, который не инициализировал yoyo.