Trace the Laminas MVC lifecycle: bootstrap, route, dispatch, render, and finish events.
Laminas MVC Request Lifecycle
// 1. public/index.php — bootstrap
require "vendor/autoload.php";
$app = LaminasMvcApplication::init(require "config/application.config.php");
$app->run();
// 2. config/application.config.php — register modules
return [
"modules" => ["LaminasRouter", "LaminasValidator", "Application", "Blog"],
"module_listener_options" => [
"config_glob_paths" => ["config/autoload/{,*.}{global,local}.php"],
"config_cache_enabled" => false,
],
];
// 3. Module.php — each module configures itself
namespace Blog;
class Module {
public function getConfig(): array {
return include __DIR__ . "/../config/module.config.php";
}
}
// Lifecycle events fired:
// bootstrap → route → dispatch → render → finish