我正在實(shí)現(xiàn)接口自動(dòng)裝配。config/services.yaml 示例工作得很好,但是當(dāng)使用 config/services.php 而不是 config/services.yaml 時(shí),config/services.php 中的代碼不會(huì)被觸發(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);};這是一個(gè)錯(cuò)誤還是我錯(cuò)過了什么?我還在 config/services.php 中添加了無效的 php 代碼,并且沒有拋出任何錯(cuò)誤。所以這讓我得出結(jié)論,config/services.php 根本沒有運(yùn)行。
1 回答

慕森王
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
只是為了了解一些背景信息,從 5.1 開始,Symfony 開始轉(zhuǎn)向使用基于 php 的 config/services.php 和 paths.php 文件來代替 yaml 文件進(jìn)行配置。
但是,您需要?jiǎng)h除相應(yīng)的 yaml 文件才能加載 php 文件。您可以在 Kernel::configureContainer() 中看到這一點(diǎn)。
至少在我的設(shè)置中,我還發(fā)現(xiàn)在對(duì) services.php 或 paths.php 進(jìn)行更改后,我必須手動(dòng)運(yùn)行“bin/console clear:cache”。緩存不會(huì)像 yaml 文件那樣自動(dòng)刷新??赡苤皇俏易鲥e(cuò)了什么。
基于 php 的服務(wù)和路由構(gòu)建器非常強(qiáng)大。它們?yōu)槟峁┝舜罅空Z法檢查和自動(dòng)完成幫助。非常值得研究。該文檔并排提供了 yaml、xml 和 php 的示例。
- 1 回答
- 0 關(guān)注
- 118 瀏覽
添加回答
舉報(bào)
0/150
提交
取消