Lemonade Framework

Un framework PHP basé sur les standards PSR pour le runtime web et CLI.

Une base modulaire pour PHP 8.1+ avec PSR HTTP, PSR logging, un container compatible PSR-11, routing, views, couche base de données, sessions, validation, uploads et commandes CLI.

Runtime basé sur PSRBootstrap partagé pour le web et le CLIBase de composants
bootstrap/app.php
$kernel->handle();
Runtime flow
RequestKernelProvidersRouterControllerResponse
Product showcase

What ships with Lemonade

Core capabilities

Built for PHP applications that need structure, not noise

Runtime basé sur PSR

HTTP messages, middleware, factories, logging, intégration du client HTTP et DI container respectent les contrats PSR là où cela a du sens.

Bootstrap partagé pour le web et le CLI

Les web requests et les commandes CLI partagent la même configuration, le même modèle provider et le même container, avec des entrypoints séparés Kernel et CliKernel.

Base de composants

Routing, views, couche base de données, sessions, validation, uploads, security, events, queues et documentation sont organisés comme des composants framework explicites.

Components

Composants du framework

Vue d’ensemble des principales parties intégrées qui servent de base aux applications web, projets CMS, interfaces d’administration et systèmes d’intégration.

Core

Application Core

ApplicationContext, kernels, runtime lifecycle, chargement de la configuration et orchestration des service providers.

component.php
$kernel->handle();
Documentation
Core

CLI Runtime

CLI entrypoint, lifecycle du CliKernel, command registry, exit codes et cron pattern avec verrou.

component.php
vendor/bin/lemonade list
Documentation
Core

Localization

Resolving de la locale courante, chargement des traductions, fallback strategy et application de la langue pendant le runtime.

component.php
$title = $helpers->lang('home.hero.title');
Documentation
Core

Dependency Injection Container

Service lifetimes, bindings, aliases, dependency resolution et patterns pratiques pour l’enregistrement des services.

component.php
$container->singleton(MyService::class, MyService::class);
Documentation
Core

Registered Services

Stratégie d’enregistrement des services dans le DI. Les registrations provider-specific et les exemples pratiques sont répartis dans les sous-pages.

component.php
$container->get(Lemonade\Framework\Routing\UrlGenerator::class);
Documentation
HTTP

HTTP Layer

HTTP request/response runtime, middleware pipeline, dispatch handlers et error rendering flow.

component.php
(new KernelFactory())->create($context)->handle();
Documentation
HTTP

API du framework

L’application dispose d’une couche API du framework avec un endpoint de health check, une spécification OpenAPI et une documentation HTML simple.

component.php
GET /api/framework/health
Documentation
HTTP

Middleware

Middleware contracts, ordre de traitement, interception du request/response flow et règles de composition.

component.php
$framework->middleware(fn (MiddlewareStack $stack) => $stack->add(App\Http\Middleware\AuthMiddleware::class));
Documentation
Optimization

HTML Minification

Comportement du HTML response minification middleware, safety guards et points d’intégration.

component.php
$pipeline->pipe(HtmlMinifyMiddleware::class);
Documentation
HTTP

Routing

Router avec routes explicites et convention routes, named URL generation, route groups et middleware stack.

component.php
$router->getNamed('home', '/', 'HomeController@index');
Documentation
Presentation

View Rendering

Wiring du view engine, shared variables, component integration et rendering workflow.

component.php
$html = $this->view()->render('home.index', ['title' => 'Homepage']);
Documentation
Presentation

UI Components

Presentation blocks réutilisables, enregistrés via service providers et exposés via ComponentRegistry.

component.php
$components = $container->get(ComponentRegistry::class);
Documentation
Persistence

Database Layer

Infrastructure database partagée, provider boundaries, schema API et utilisation pratique de base.

component.php
use Lemonade\Framework\Database\Database;

$db = $container->get(Database::class);
$rows = $db->select('SELECT * FROM users WHERE active = ?', [1]);
Documentation
State

Session

Session lifecycle, flash messages, handler bindings et intégration dans le request flow.

component.php
$session->set('user_id', 42);
Documentation
Security

Security

Security primitives, CSRF protection, limites sûres du request processing et notes sur l’authentification.

component.php
<?= $helpers->csrfField() ?>
Documentation
Input

Validation

Aperçu de FormValidation, schema usage et pages dédiées à la description détaillée des règles de validation.

component.php
$result = $validator->field('email')->required()->email()->validate($payload);
Documentation
Diagnostics

Debug

Composant Debug avec dumper service, capture du context et sélection du renderer CLI/HTML.

component.php
dump($payload);
Documentation
SEO

Discovery

Intégration de robots.txt et sitemap.xml pour la découvrabilité technique du site.

component.php
$router->get("/sitemap.xml", ...);
Documentation
Files

Filesystem

Filesystem service, storage path helpers, file operations et écritures sûres pendant le runtime.

component.php
$filesystem->write($context->resolveCachePath('example.json'), json_encode($payload, JSON_THROW_ON_ERROR));
$data = json_decode($filesystem->read($context->resolveCachePath('example.json')), true, 512, JSON_THROW_ON_ERROR);
Documentation
Files

Upload

Upload service flow, file validation boundaries, storage strategies et exemples de traitement des fichiers.

component.php
$image = $this->upload()->uploadImage('avatar', 'avatar');
Documentation
Observability

Observability

Benchmarking, request logging, tracing hooks et points d’intégration pour le diagnostic opérationnel.

component.php
$logger->info('Import started');
Documentation
Support

Support Utilities

Helper utilities, support abstractions partagées et usage patterns recommandés à travers l’application.

component.php
$url = $helpers->url('documentation.show', ['path' => 'core']);
Documentation