[!!!][TASK] Replace ClassInfo with ClassSchema
Extbase came along with two main caches for reflection data. extbase_reflection and extbase_object. The latter mostly stored information that were relevant to the dependency injection, like inject methods and properties and constructor parameters. The information was gathered by actual reflection and by analysing doc blocks of properties and methods. extbase_reflection stored similar reflection and doc block data about objects but mainly for the parts outside dependency injection. For example, the validation resolver used it to identify @validate tags, the ActionController used it to identity which properties not to validate. The ORM also used it a lot to find annotated types via @var and so on. There were a few issues with these two approaches: - A lot of redundant data was fetched - Data was fetched multiple times at different locations - The extbase_reflection cache was stored each plugin seperately, resulting in a lot of redundant cache data for each plugin cache - At a lot of places, the reflection service was used to reflect objects, but the data wasn't cached or taken from a cache resulting in performance drawbacks This patch solves these issues with several approaches: - The extbase_object cache has been removed completely and all necessary information about objects, mainly @inject stuff, is now fetched from the ReflectionService as well. - The ReflectionService does still create ClassSchema instances but these were improved a lot. All necessary information is now gathered during the instantiation of ClassSchema instances. That means that all necessary data is fetched once and then it can be used everywhere making any further reflection superfluous. - As runtime reflection has been removed completey, along with it several reflection classes, that analyzed doc blocks, have been removed as well. These are no longer necessary. - The extbase_reflection cache is no longer plugin based and will no longer be stored in the database in the first place. Serialized ClassSchema instances will stored in typo3temp. Releases: master Resolves: #57594 Resolves: #55654 Change-Id: I93b905c85c4f28775f014ca8b585347bf6f1e7d3 Reviewed-on: https://review.typo3.org/54381 Reviewed-by:Benni Mack <benni@typo3.org> Tested-by:
Benni Mack <benni@typo3.org> Tested-by:
TYPO3com <no-reply@typo3.com> Reviewed-by:
Susanne Moog <susanne.moog@typo3.org> Tested-by:
Susanne Moog <susanne.moog@typo3.org>
Showing
- typo3/sysext/core/Configuration/DefaultConfiguration.php 1 addition, 9 deletionstypo3/sysext/core/Configuration/DefaultConfiguration.php
- typo3/sysext/core/Documentation/Changelog/master/Breaking-57594-OptimizeReflectionServiceCacheHandling.rst 63 additions, 0 deletions...Breaking-57594-OptimizeReflectionServiceCacheHandling.rst
- typo3/sysext/core/Documentation/Changelog/master/Deprecation-57594-OptimizeReflectionServiceCacheHandling.rst 42 additions, 0 deletions...recation-57594-OptimizeReflectionServiceCacheHandling.rst
- typo3/sysext/core/Documentation/Changelog/master/Feature-57594-OptimizeReflectionServiceCacheHandling.rst 54 additions, 0 deletions.../Feature-57594-OptimizeReflectionServiceCacheHandling.rst
- typo3/sysext/extbase/Classes/Core/Bootstrap.php 0 additions, 45 deletionstypo3/sysext/extbase/Classes/Core/Bootstrap.php
- typo3/sysext/extbase/Classes/Mvc/Cli/Command.php 29 additions, 29 deletionstypo3/sysext/extbase/Classes/Mvc/Cli/Command.php
- typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php 1 addition, 1 deletion...ysext/extbase/Classes/Mvc/Controller/ActionController.php
- typo3/sysext/extbase/Classes/Mvc/Dispatcher.php 0 additions, 13 deletionstypo3/sysext/extbase/Classes/Mvc/Dispatcher.php
- typo3/sysext/extbase/Classes/Mvc/RequestHandlerResolver.php 0 additions, 13 deletionstypo3/sysext/extbase/Classes/Mvc/RequestHandlerResolver.php
- typo3/sysext/extbase/Classes/Object/Container/ClassInfo.php 0 additions, 170 deletionstypo3/sysext/extbase/Classes/Object/Container/ClassInfo.php
- typo3/sysext/extbase/Classes/Object/Container/ClassInfoCache.php 0 additions, 84 deletions...ysext/extbase/Classes/Object/Container/ClassInfoCache.php
- typo3/sysext/extbase/Classes/Object/Container/ClassInfoFactory.php 0 additions, 172 deletions...ext/extbase/Classes/Object/Container/ClassInfoFactory.php
- typo3/sysext/extbase/Classes/Object/Container/Container.php 45 additions, 91 deletionstypo3/sysext/extbase/Classes/Object/Container/Container.php
- typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php 2 additions, 2 deletionstypo3/sysext/extbase/Classes/Persistence/Generic/Backend.php
- typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php 1 addition, 1 deletion...extbase/Classes/Persistence/Generic/Mapper/DataMapper.php
- typo3/sysext/extbase/Classes/Persistence/Generic/Session.php 0 additions, 13 deletionstypo3/sysext/extbase/Classes/Persistence/Generic/Session.php
- typo3/sysext/extbase/Classes/Reflection/ClassReflection.php 0 additions, 187 deletionstypo3/sysext/extbase/Classes/Reflection/ClassReflection.php
- typo3/sysext/extbase/Classes/Reflection/ClassSchema.php 437 additions, 4 deletionstypo3/sysext/extbase/Classes/Reflection/ClassSchema.php
- typo3/sysext/extbase/Classes/Reflection/MethodReflection.php 0 additions, 111 deletionstypo3/sysext/extbase/Classes/Reflection/MethodReflection.php
- typo3/sysext/extbase/Classes/Reflection/ObjectAccess.php 8 additions, 4 deletionstypo3/sysext/extbase/Classes/Reflection/ObjectAccess.php
Please register or sign in to comment