12. Biggest Changes to DI
- Private Services
- Class name as service id
- Autowiring
- Autoconfiguration
- Controllers as services
- No Bundles
* Most of the listed features were introduced in Symfony 3.3
- Yaml syntax improvements:
- _defaults
- autowiring
- autoconfiguration
- !tagged_iterator
- !iterator
- !service_locator
- !returns_clone
- !service
14. 3rd Party Deps Still Use Service Class Parameters
- akeneo_batch
- doctrine
- fos_js_routing
- hwi_oauth
- jms_serializer
- knp_menu
- nelmio_api_doc
- snc_redis
- stof_doctrine_extensions
- etc.
37. Private Services by Default
Some are still public:
- Controllers
- Commands
- Services fetched from Container directly
- Lazy Services
- Those that were hard to refactor
38. Workarounds to Save Upgrade Time
In ContainerAware migrations all*oro*
services are still public
https://github.com/oroinc/platform/tree/
master/src/Oro/Bundle/MigrationBundle/
DependencyInjection/Compiler
42. Conclusion
- Symfony 3.3 DI improvements can now
be fully used
- Services configuration is now much
easier in Yaml
- Less reasons to create a Compiler Pass
- Autowiring is not recommended
- DX was significantly improved in
OroPlatform 4.1 LTS, thanks to Symfony
4.4 LTS