Modular and configurable bootstrap
The bootstrap contains a big amount of specific initialization methods. The order of execution and selection of initialization methods is hardwired in the Bootstrap class. This makes it impossible for package developers to provide alternative boot sequences for specific tasks (such as for a very optimized caching mechanism) and in general results in a rather function-based, sequential code than being object-oriented.
It thus should be possible to register Request Handlers for specific purposes and those should be in charge of the actual boot sequence which is executed.
[TASK] Optimized package manager and configuration manager initialization
This patch introduces a somewhat lazier initialization for the
Configuration Manager's cache and the scanning of available packages
and loading of package state information.
NOTE: On the first hit, the modified Package Manager will introduce
a new format for the PackageStates.php. From now on the configuration
in that file also contains a version number which allows for automatic
migration of that file in the future.
[FEATURE][!!!] Modular and configurable bootstrap
This extracts all specific initialization methods from the bootstrap
into a "Scripts" class and instead of hard-wiring each initialization
step, introduces a loose, configurable coupling by means of a sequence
and steps. The responsibility for the actual boot sequence now lies at
the request handler taking care of the request.
Request handlers must now be explicitly registered in the package
class. The interface to be implemented was moved to the Core namespace.