我正在实现接口自动装配。config/services.yaml 示例工作得很好,但是当使用 config/services.php 而不是 config/services.yaml 时,config/services.php 中的代码不会被触发。所以这有效:# config/services.yamlservices: # ... 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.phpnamespace 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 根本没有运行。
1 回答
慕森王
TA贡献1777条经验 获得超3个赞
只是为了了解一些背景信息,从 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 的示例。
- 1 回答
- 0 关注
- 89 浏览
添加回答
举报
0/150
提交
取消