Laravel: разрешение объектов из контейнера IoC

В 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?

0

Решение

Это из-за того, как Laravel загружает файлы. Первый filters.php выполняется, а затем global.php поэтому сначала вы создаете нормальный объект, а затем синглтон. Если вы двигаетесь:

$a= App::make('yoyo');
$a->data = 'yep';

в global.php после создания синглтона вы получите ожидаемый результат:

object (Yoyo) # 247 (1) {[«data»] => string (3) «yep»}

0

Другие решения

Хорошо, полная ошибка с моей стороны. Произошло перенаправление, поэтому контроллер фактически выполнял новый запрос, который не инициализировал yoyo.

0

По вопросам рекламы [email protected]