我正在實現(xiàn)接口自動裝配。config/services.yaml 示例工作得很好,但是當使用 config/services.php 而不是 config/services.yaml 時,config/services.php 中的代碼不會被觸發(fā)。所以這有效:# 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條經(jīng)驗 獲得超3個贊
只是為了了解一些背景信息,從 5.1 開始,Symfony 開始轉向使用基于 php 的 config/services.php 和 paths.php 文件來代替 yaml 文件進行配置。
但是,您需要刪除相應的 yaml 文件才能加載 php 文件。您可以在 Kernel::configureContainer() 中看到這一點。
至少在我的設置中,我還發(fā)現(xiàn)在對 services.php 或 paths.php 進行更改后,我必須手動運行“bin/console clear:cache”。緩存不會像 yaml 文件那樣自動刷新??赡苤皇俏易鲥e了什么。
基于 php 的服務和路由構建器非常強大。它們?yōu)槟峁┝舜罅空Z法檢查和自動完成幫助。非常值得研究。該文檔并排提供了 yaml、xml 和 php 的示例。
- 1 回答
- 0 關注
- 111 瀏覽
添加回答
舉報
0/150
提交
取消