decodelabs / genesis
Universal bootstrapping framework
Installs: 17 798
Dependents: 8
Suggesters: 1
Security: 0
Stars: 2
Watchers: 2
Forks: 0
Open Issues: 0
Type:composer-plugin
Requires
- php: ^8.4
- composer-plugin-api: ^2.0
- decodelabs/archetype: ^0.4
- decodelabs/atlas: ^0.14
- decodelabs/exceptional: ^0.6.3
- decodelabs/kingdom: ^0.1
- decodelabs/monarch: ^0.2
- decodelabs/slingshot: ^0.3
- decodelabs/terminus: ^0.14
Requires (Dev)
- composer/composer: ^2.0
- decodelabs/commandment: ^0.3.0
- decodelabs/phpstan-decodelabs: ^0.7
- decodelabs/systemic: ^0.12.0
- dev-develop / 0.14.x-dev
- v0.14.5
- v0.14.4
- v0.14.3
- v0.14.2
- v0.14.1
- v0.14.0
- v0.13.1
- v0.13.0
- v0.12.5
- v0.12.4
- v0.12.3
- v0.12.2
- v0.12.1
- v0.12.0
- v0.11.3
- v0.11.2
- v0.11.1
- v0.11.0
- v0.10.0
- v0.9.2
- v0.9.1
- v0.9.0
- v0.8.6
- v0.8.5
- v0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.4
- v0.7.3
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.0
- v0.4.1
- v0.4.0
- v0.3.0
- v0.2.1
- v0.2.0
- v0.1.1
- v0.1.0
- dev-main
This package is auto-updated.
Last update: 2025-08-27 10:55:02 UTC
README
Universal bootstrapping framework for PHP applications
Genesis provides everything you need to bootstrap your application at runtime. Take the guesswork out of how best to structure the lowest level code in your framework and app.
Installation
Install via Composer:
composer require decodelabs/genesis
Usage
Hub
Genesis requires consumers of the library to implement a number of interfaces to represent important parts of the bootstrap process. With these classes in place, it is then able to provide a unified, dependable bootstrap process for all environments.
Most important is the Hub
interface:
namespace DecodeLabs\Genesis; use DecodeLabs\Genesis\Environment\Config as EnvConfig; use DecodeLabs\Genesis\Build\Manifest as BuildManifest; use DecodeLabs\Kingdom; interface Hub { public ?BuildManifest $buildManifest { get; } public function initializeLoaders(): void; public function loadBuild(): Build; public function loadEnvironmentConfig(): EnvConfig; public function initializePlatform(): void; public function loadKingdom(): Kingdom; }
Bootstrapping
Genesis
now runs as a composer plugin, automatically generating an entry point for your application when composer updates.
You just need to add make sure you have set your composer type
('project' for a standalone app, 'library' for a library) and your Hub
class to the genesis.hub
extra key in your composer.json
file:
{ "extra": { "genesis": { "hub": "My\\Genesis\\Hub" } } }
You can then point your HTTP server to rewite to vendor/genesis.php
as your entry point. Genesis takes care of the rest.
Compiled builds
Genesis supports an advanced build compilation process which can be used for isolating active runtime code from the source of your application. This is especially useful for legacy frameworks that can't easily be deployed using a third party automated deployment system.
Compiled builds are a complex topic due to the necessity of locating the correct build folder before loading any other code and needing to seamlessly deploy updates without unwittingly mixing different versions of libraries during execution.
Full details of how to work with compiled builds can be found here.
Licensing
Genesis is licensed under the MIT License. See LICENSE for the full license text.