glaphire
@glaphire
PHP developer

Как установить lazy load сервису League\Flysystem\Adapter\Local?

Привет!
Подскажите, пожалуйста, как правильно решить эту проблему.
Symfony 5.0, dev env, пакет 1up-lab/OneupFlysystemBundle.
Хочу задать ленивую загрузку для League\Flysystem\Adapter\Local, но она не работает.
Проверка class_implements($filesystem) не показывает прокси интерфейсы, проверка через bin/console debug:container тоже ничего не меняет.
#config/services.yaml
services:
    _defaults:
        autowire: true
        autoconfigure: true
        bind:
            $filesystem: '@oneup_flysystem.local_filesystem_adapter'
    #other stuff
    League\Flysystem\Adapter\Local:
        lazy: true

Заранее поставила symfony/proxy-manager-bridge и ocramius/proxy-manager, почистила var/cache.
Разные варианты конфигурации дают ошибки:
- замена класса на алиас:
The definition for "oneup_flysystem.local_filesystem_adapter" has no class. If you intend to inject this service dynamically at runtime, please mark it as synthetic=true. If this is an abstract definition solely used by child definitions, please add abstract=true, otherwise specify a class to get rid of this error.

- добавление алиаса к параметрам класса:
The configuration key "lazy" is unsupported for the service "League\Flysystem\Adapter\Local" which is defined as an alias in "/app/config/services.yaml". Allowed configuration keys for service ali  
  ases are "alias", "public" and "deprecated" in /app/config/services.yaml (which is loaded in resource "/app/config/services.yaml").

Я понимаю, что неправильно настраиваю сервис, но запуталась, с какой стороны к нему подходить.
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
// App\Kernel
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
{
    // ...
    $container->addCompilerPass(new class implements CompilerPassInterface {
        public function process(ContainerBuilder $container)
        {
            $container->getDefinition('oneup_flysystem.adapter.local')->setLazy(true);
        }
    });
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы