[TASK] Add Runtime Cache to Reflection\ObjectAccess

Using Reflection\ObjectAccess during validation or f.e. JsonView in an
extensive way you soon will end up with thousands of calls to functions
of that class.

By adding a runtime cache this can be sped up.

Change-Id: I2abbbd5924cd0177ad8a31cb01c2953dd5ba39fd
Resolves: #42723
Releases: master
[BUGFIX] Flow CLI again works for Windows command prompt

Probably introduced with Ibd70e2dc8ff3a958a33ad0eb422060dc0fd8b799,
the Flow CLI call via the provided .bat file didn't work anymore
because the used ``$_SERVER['PHP_SELF']`` will behave differently
for the flow shell and the flow.bat file: in case of the shell,
the actual ``Scripts/flow.php`` file will be *included*, while in
case of the .bat file, the ``Scripts/flow.php`` file is immediately
called with PHP. This results in a different PHP_SELF value.

The ``FLOW_ROOTPATH`` value which has to be determined, now is built
manually in case of a ``DIRECTORY_SEPARATOR`` equaling a
Windows one.

Additionally, in order to still allow calling the flow executable
from arbitrary locations also for Windows, the flow.bat file
is adjusted a bit in order to not rely on being at the root
path when calling the file.

Change-Id: Icc55e90ba4aff11efab1e2b8307fdbbe41b35735
Fixes: #44000
Related: #31642
Releases: master, 2.0
[BUGFIX] Exception thrown in TypeHandling (follow up)

When using isCollectionType() on an string, a warning is thrown.
The change id Iae59221cbd72677e6c18ad0a383792a798447253 introduced this.

Change-Id: Idb1a18fddae425fe03c4c1102c22133d716a6b65
Resolves: #45876
Releases: master, 2.0, 1.1
[TASK] Allow package key wildcards for excludeClasses

The object.excludeClasses setting can now handle a trailing * as a
wildcard character in the package key.

Change-Id: I5f9078bf9c2438d9c32ec4eb46b0ec7d8d94ba57
Releases: master, 2.0
[TASK] Make Aspects singletons

Change-Id: I433d6cbfce3eeba1b67386b7b459a61452fac413
[BUGFIX] Flow Bootstrap now works if PhpUnit is used as Phar file

If PhpUnit was used as a Phar file, the Flow Core Bootstrap failed
during initialization in Testing context because it tried to find
PhpUnit's autoloader. Since autoloading is already in effect when
using the Phar version, a simple check for the existence of a
PhpUnit class is sufficient.

Change-Id: I2a988660b207f1df2972074c57f0e05084350ddc
Releases: master, 2.0
Merge "[TASK] Make Aspects singletons"
[BUGFIX] Add Flow-Doctrine cache adapter

This adds a cache adapter for Doctrine. It is used for the Doctrine ORM
metadata and query cache instead of the ArrayCache used until now.

Until now the cache implementations of Doctrine that could be configured
were not usable. This change fixes that, so that actually a cache for
metadata and query caching is used.

Change-Id: I37406667197f38f66ae778254307f09fab2b0b95
Fixes: #45264
Releases: master, 2.0
[BUGFIX] Remove unneeded filesystem calls

This change removes a call to is_dir in the FileMonitor
which is duplicate as the ReadDirectoryRecursively does
exactly the same and throws an error in this case.

Also 2 calls to file_exists are removed as they're not
necessary at this point as filemtime() will just return
FALSE if something goes wrong.

Change-Id: I93c624cf5d5684d0fe33e8fdf348c535b742d54a
Resolves: #46290
Releases: master, 2.0
[BUGFIX] Compile original and proxy class into one file

Reduce amount of file inclusions by combining original class
code and proxy class code into the same file as both need to
be loaded anyway.

Releases: 2.0, master
Fixes: #46338
Change-Id: I4ff462b68683ef60166a642ad3382af63623c062
[TASK] Use include with shutup instead of file_exists

This change uses include with shutup operator instead of file_exists
checks for optimized performance.

Change-Id: Ia2ddef625db70d8c985526978b6d83cebbe4d90f
Fixes: #46337
Releases: master, 2.0
Merge "[TASK] Allow package key wildcards for excludeClasses"
[TASK] Change order of accessing identity in getIdentifierByObject

This change improves the performance of getIdentifierByObject since
the EntityManager contains method is rather slow.

Change-Id: Ib6e1eda1ac38677e84c46a441d099b2c5c1e6e24
Releases: master, 2.0
[TASK] Remove file_get_contents call in Cache FileBackend

Releases: master, 2.0
Fixes: #46343
Change-Id: I8181ee30632a1f0513708a418d977d98bea7144d
Merge "[BUGFIX] Compile original and proxy class into one file"
[!!!][FEATURE] Lazy Dependency Injection

This introduces lazy dependency injection for dependencies injected
through Property Injection. Instead of loading the respective class
and instantiating the dependency right away, a proxy object is
injected which automatically replaces itself with the real dependency
once a method is called on it.

The @Inject annotation now accepts an optional argument "lazy" which
allows for turning off lazy dependency injection in specific cases.

Please read the new section in the Object Management chapter of
the Flow manual, included in this change set.

Change-Id: Ia61e40708cdb3d00210df9a5630e64aa8f89b82a
Resolves: #43819
Releases: master, 2.0
Merge "[BUGFIX] Exception thrown in TypeHandling (follow up)"
[TASK] Optimize I18N service

This change makes the I18N service usable for lazy loading by removing
it from the default runtime. Additionally the Locale class is marked
as non-proxyable to prevent calls to the wakeup function.

Change-Id: I263019d65bfb8dc6e63721807e31025a239ca5da
Releases: master, 2.0
[TASK] Use property injection where possible

This change refactors setter injection to property injection to allow
lazy dependency injection.

Change-Id: I9dfa4b24bb865f36f03561b8a1bf2901150732d2
Releases: master, 2.0
Merge "[!!!][FEATURE] Lazy Dependency Injection"