[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/+/83033 Tested-by:Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
core-ci <typo3@b13.com>
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 59 additions, 59 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 4 additions, 3 deletionstypo3/sysext/frontend/Classes/ServiceProvider.php
- typo3/sysext/install/Classes/ServiceProvider.php 32 additions, 32 deletionstypo3/sysext/install/Classes/ServiceProvider.php
Please register or sign in to comment