[TASK] Use first class closures for service provider factories
Adapt the service provider compiler to perform the same level of optimization as for the array-based callable syntax: We unroll the static closure into its static components (class name and method name). That means the effective generated dependency injection php code is the same as before with the gain of better DX. Note that first class closures can only be used where methods of the current scope are referenced, late state binding is not supported. AbstractServiceProvider therefore keeps using array-based callable syntax to be able to reference method scope of extending classes. Resolves: #103104 Releases: main, 12.4 Change-Id: I2f8ca7a69b1b69c51b1ff6bec384ddafe4492a41 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82593 Tested-by:Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Benni Mack <benni@typo3.org> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Benni Mack <benni@typo3.org> Tested-by:
Stefan Bürk <stefan@buerk.tech>
Showing
- typo3/sysext/backend/Classes/ServiceProvider.php 14 additions, 14 deletionstypo3/sysext/backend/Classes/ServiceProvider.php
- typo3/sysext/core/Classes/DependencyInjection/ServiceProviderCompilationPass.php 13 additions, 0 deletions...es/DependencyInjection/ServiceProviderCompilationPass.php
- typo3/sysext/core/Classes/Package/AbstractServiceProvider.php 1 addition, 1 deletion...3/sysext/core/Classes/Package/AbstractServiceProvider.php
- typo3/sysext/core/Classes/ServiceProvider.php 63 additions, 63 deletionstypo3/sysext/core/Classes/ServiceProvider.php
- typo3/sysext/core/Tests/Unit/DependencyInjection/Fixtures/TestServiceProvider.php 8 additions, 0 deletions...Unit/DependencyInjection/Fixtures/TestServiceProvider.php
- typo3/sysext/core/Tests/Unit/DependencyInjection/ServiceProviderCompilationPassTest.php 4 additions, 0 deletions...ependencyInjection/ServiceProviderCompilationPassTest.php
- typo3/sysext/dashboard/Classes/ServiceProvider.php 10 additions, 10 deletionstypo3/sysext/dashboard/Classes/ServiceProvider.php
- typo3/sysext/extbase/Classes/ServiceProvider.php 5 additions, 5 deletionstypo3/sysext/extbase/Classes/ServiceProvider.php
- typo3/sysext/fluid/Classes/ServiceProvider.php 3 additions, 3 deletionstypo3/sysext/fluid/Classes/ServiceProvider.php
- typo3/sysext/frontend/Classes/ServiceProvider.php 3 additions, 3 deletionstypo3/sysext/frontend/Classes/ServiceProvider.php
- typo3/sysext/install/Classes/ServiceProvider.php 34 additions, 34 deletionstypo3/sysext/install/Classes/ServiceProvider.php
Please register or sign in to comment