Task #88612

Updated by Alexander Schnitzler 6 months ago

This patch tackles three different issues with the current
ClassSchema property api.

1) Due to the history and the refactoring of the ReflectionService,

the ClassSchema class cached data redundantly. Information like

the type of a property has been stored multiple times in different

cache keys. With this patch, the redundancy has been removed.

The information about properties had been roughly grouped by the

ones gathered by php reflection and the ones gathered from doc

blocks and/or annotations. This kind of grouping had also been

exposed to the public by different methods in the Property class.

Said grouping has been removed and the api does no longer allow

for requesting annotation data. The purpose of the api is to tell

the status quo of the information about a property, regardless of

how said information had been gathered in the first place.

Instead of exposing the annotation data itself via method

`getAnnotationValue('lazy')`, there is a specific method for each

relevant piece of information like `isLazy()`.

A lot of information about properties are boolean values which

had been stored as separate keys in the cache. All boolean keys

are now represented by a BitSet, which saves quite a lot of

bytes during serialization of ClassSchema instances.