回答
它們帶有服務定義。
通過創建編譯器通道,您可以更新傳遞給服務的參數。
它最常用標記服務完成。
而且,它可用於:
創建要求有關被定義之前,其他定義的服務信息的新服務。
將參數交換或添加到您未寫入的服務。
創建和修改容器中的參數。
我用一個編譯器通過註冊一個工廠,使我能夠重寫教條庫。
你可以看到代碼,它是如何工作更多的理解:
https://gist.github.com/chalasr/77be8eee5e3ecd3c06ec
更新
感謝對@Sruj,我說我已經忘記了Extension
Extension
也是依賴注入的一部分,尤其是配置。
它的主要作用是在整個應用程序包中加載服務配置。
而不是使用imports
手動加載您的配置,您可以創建一個擴展程序,爲您做。您的所有服務配置都從您的軟件包中註冊並在您的整個應用程序中共享。
當您在應用程序配置中註冊供應商時,會調用供應商的服務容器擴展。
我更新了我的答案 – chalasr
我接受你的答案,但我仍然需要深入挖掘擴展,因爲此外加載和註冊配置擴展可能做得更多,就像在這裏https://github.com/FriendsOfSymfony/FOSRestBundle/blob /master/DependencyInjection/FOSRestExtension.php或在這裏https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/master/DependencyInjection/FOSElasticaExtension.php或這裏https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/DependencyInjection/FOSUserExtension。php –
鏈接中的所有代碼都包含到服務配置的加載中。通過設置加載服務的參數和定義,命名/組織它們,它也理解成爲配置的一部分。編譯器pass之間的主要區別在於它允許更新您未編寫的已配置服務。 – chalasr
- 1. 編譯使用使用cpptasks擴展
- 2. 在使用rbenv編譯ruby時如何傳遞編譯標誌?
- 3. 使用Closure編譯器時擴展錯誤
- 4. 使用cx_Freeze編譯Python C擴展
- 5. 使用COLeDateTime編譯swig擴展python
- 6. 使用VC2010編譯Python擴展
- 7. 如何使用cython編譯擴展?
- 8. 如何在JavaScript中註釋擴展泛型的類,使用閉包編譯器
- 9. Symfony 2:在表單構建器中使用樹枝擴展
- 10. 我可以使用MinGW編譯的Python擴展與Visual C++編譯的擴展一起使用嗎?
- 11. 在PHP中使用編譯的python的Cython擴展?
- 12. 如何在virtualenv中使用MinGW編譯Python C擴展?
- 13. 如何在R中使用dll擴展重新編譯程序?
- 14. 使用擴展方法的擴展類
- 15. 使用Symfony和Doctrine擴展FilteringSelect/AutoComplete
- 16. Symfony,querybuilder,使用擴展從pgsql
- 17. 編譯。至於在擴展基類
- 18. 在Firefox擴展中使用jQuery擴展
- 19. 在Swift中使用Objective-C擴展類
- 20. 在擴展類中使用MouseListener
- 21. 在BroadcastReceiver擴展類中使用getContentResolver
- 22. 在xcode 4.4中使用類擴展
- 23. 在PHP7中使用Pool類pthreads擴展
- 24. 在擴展類中使用導入?
- 25. SQLAlchemy中的編譯擴展:索引中使用的函數
- 26. 傳遞擴展類方法,如在WordPress
- 27. 使用Symfony驗證是否上傳了文件擴展名?
- 28. 擴展時使用父類的方法
- 29. 在運行時編譯並使用類
- 30. 使用symfony時,php_apc擴展打開時Apache崩潰了嗎?
http://symfony.com/doc/current/cookbook/service_container/compiler_passes.html&http://symfony.com/doc/current/cookbook/bundles/extension .html#created-an-extension-class –
這些鏈接說的是如何,不是爲什麼,什麼時候。無論如何感謝回覆。 –