交响乐 5.1 | config/services.php 不工作

我正在实现接口自动装配

config/services.yaml 示例工作得很好,但是当使用 config/services.php 而不是 config/services.yaml 时,config/services.php 中的代码不会被触发。


所以这有效:


# config/services.yaml

services:

    # ...


    App\Util\Rot13Transformer: ~


    # the ``App\Util\Rot13Transformer`` service will be injected when

    # an ``App\Util\TransformerInterface`` type-hint is detected

    App\Util\TransformerInterface: '@App\Util\Rot13Transformer'

但这并不:


// config/services.php

namespace Symfony\Component\DependencyInjection\Loader\Configurator;


use App\Util\Rot13Transformer;

use App\Util\TransformerInterface;


return function(ContainerConfigurator $configurator) {

    $services = $configurator->services();

    $services->set(Rot13Transformer::class);


    // the ``App\Util\Rot13Transformer`` service will be injected when

    // an ``App\Util\TransformerInterface`` type-hint is detected

    $services->alias(TransformerInterface::class, Rot13Transformer::class);

};

这是一个错误还是我错过了什么?


我还在 config/services.php 中添加了无效的 php 代码,并且没有抛出任何错误。所以这让我得出结论,config/services.php 根本没有运行。


慕村225694
浏览 90回答 1
1回答

慕森王

只是为了了解一些背景信息,从 5.1 开始,Symfony 开始转向使用基于 php 的 config/services.php 和 paths.php 文件来代替 yaml 文件进行配置。但是,您需要删除相应的 yaml 文件才能加载 php 文件。您可以在 Kernel::configureContainer() 中看到这一点。至少在我的设置中,我还发现在对 services.php 或 paths.php 进行更改后,我必须手动运行“bin/console clear:cache”。缓存不会像 yaml 文件那样自动刷新。可能只是我做错了什么。基于 php 的服务和路由构建器非常强大。它们为您提供了大量语法检查和自动完成帮助。非常值得研究。该文档并排提供了 yaml、xml 和 php 的示例。
打开App,查看更多内容
随时随地看视频慕课网APP