Попытка обновить проект с Symfony 3.3 до 3.4. Я сделал composer update symfony/symfony --with-depdencies и добавил public: false в свой файл services.yml.
Теперь, когда я запускаю свои тесты PHPUnit, я получаю эту ошибку:
Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException : The service "templating.loader.cache" has a dependency on a non-existent service "templating.loader.wrapped".
Есть идеи, почему это происходит? Я не могу найти никаких результатов Google или каких-либо ссылок на документацию Symfony по этому поводу ...






Если вы не подготовили свой код для частных служб, вам не следует использовать тег public: false. Это используется для обозначения служб как частных. Возможно, где-то в вашем коде есть что-то вроде $var = $container->get('example');, которое вызывает общественную службу. Вы можете прочитать больше здесь.
Было обнаружено, что проблема вызвана переопределением определения templating.loader.cache на public в классе передачи компилятора, чтобы разрешить доступ во время функциональных тестов.
На основе кода здесь: https://github.com/symfony/symfony-docs/issues/8097
tl; dr не делайте этого:
final class TestCompilerPass implements CompilerPassInterface
{
/** {@inheritdoc} */
public function process(ContainerBuilder $container)
{
foreach ($container->getDefinitions() as $id => $definition) {
$definition->setPublic(true);
}
}
}
Вместо этого ограничьте услуги, которые вы публикуете, теми, которые вам действительно нужны.