为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕村225694 2023-10-15 09:51:08
我正在实现接口自动装配。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 的示例。


查看完整回答
反对 回复 2023-10-15
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信