decodelabs/genesis

Universal bootstrapping framework

v0.13.1 2025-08-22 16:17 UTC

README

PHP from Packagist Latest Version Total Downloads GitHub Workflow Status PHPStan License

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;
}

Running the app

With the necessary interfaces in place, your entry file just requires the following:

// Load Bootstrap strategy
require_once dirname(__DIR__) . '/vendor/decodelabs/genesis/src/Bootstrap/Seamless.php';

use DecodeLabs\Genesis\Bootstrap\Seamless;
use My\Hub;

new Seamless(
    hubClass: Hub::class
)->run();

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.