Symfony Container Builder метод `addObjectResource` - PullRequest
0 голосов
/ 09 мая 2019

Что делает метод addObjectResource Symfony Container Builder?

То есть - у меня есть код в расширении внедрения зависимостей , который выглядит следующим образом.

$container->addObjectResource(DoctrineORMDriver::class);

Если я отслеживаю этот код, я вижу следующее (комментарии заменяют действительный код)

public function addObjectResource($object)
{
    if ($this->trackResources) {
        // adds a bunch of stuff to ->classReflectors

        // calls ->fileExists for class and its interfaces

        // ultimatly the calling chain ends up adding stuff
        // to the ->resources property
    }
    return $this;
}

На данный момент я могу повторить свой вопрос:Немного лучше: что такое ресурс конструктора контейнеров, но мне неясно, что происходит с ним.

Почему бы мне, как человеку, пишущему расширение для внедрения зависимостей, захотеть добавить определенный класс в качестве ресурса объекта?Какие дополнительные функции в платформе Symfony это разблокирует?

1 Ответ

1 голос
/ 09 мая 2019

Ресурсы - это любой файл, который вошел в конфигурацию / сборку контейнера DI. Это используется в сочетании с компонентом Config для определения необходимости перекомпиляции кэшированного контейнера. Любое изменение ресурса вызывает перестройку кэша контейнера.

Как правило, в платформе ресурсы представляют собой ваши файлы конфигурации, но также необходимо зарегистрировать такие классы, как расширения DI, которые могут изменять контейнер, так как изменение их кода может повлиять на то, как контейнер в конечном итоге будет подключен.

Итак, ваш однострочник заявляет, что класс DoctrineORMDriver является таким классом, и его необходимо проверить при оценке, является ли кэш контейнера свежим.

Это описано в документации Symfony .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...