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.
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.
$kernel->handle();
HTTP messages, middleware, factories, logging, intégration du client HTTP et DI container respectent les contrats PSR là où cela a du sens.
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.
Routing, views, couche base de données, sessions, validation, uploads, security, events, queues et documentation sont organisés comme des composants framework explicites.
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.
ApplicationContext, kernels, runtime lifecycle, chargement de la configuration et orchestration des service providers.
$kernel->handle();
CLI entrypoint, lifecycle du CliKernel, command registry, exit codes et cron pattern avec verrou.
vendor/bin/lemonade list
Resolving de la locale courante, chargement des traductions, fallback strategy et application de la langue pendant le runtime.
$title = $helpers->lang('home.hero.title');
Service lifetimes, bindings, aliases, dependency resolution et patterns pratiques pour l’enregistrement des services.
$container->singleton(MyService::class, MyService::class);
Stratégie d’enregistrement des services dans le DI. Les registrations provider-specific et les exemples pratiques sont répartis dans les sous-pages.
$container->get(Lemonade\Framework\Routing\UrlGenerator::class);
HTTP request/response runtime, middleware pipeline, dispatch handlers et error rendering flow.
(new KernelFactory())->create($context)->handle();
L’application dispose d’une couche API du framework avec un endpoint de health check, une spécification OpenAPI et une documentation HTML simple.
GET /api/framework/health
Middleware contracts, ordre de traitement, interception du request/response flow et règles de composition.
$framework->middleware(fn (MiddlewareStack $stack) => $stack->add(App\Http\Middleware\AuthMiddleware::class));
Comportement du HTML response minification middleware, safety guards et points d’intégration.
$pipeline->pipe(HtmlMinifyMiddleware::class);
Router avec routes explicites et convention routes, named URL generation, route groups et middleware stack.
$router->getNamed('home', '/', 'HomeController@index');
Wiring du view engine, shared variables, component integration et rendering workflow.
$html = $this->view()->render('home.index', ['title' => 'Homepage']);
Presentation blocks réutilisables, enregistrés via service providers et exposés via ComponentRegistry.
$components = $container->get(ComponentRegistry::class);
Infrastructure database partagée, provider boundaries, schema API et utilisation pratique de base.
use Lemonade\Framework\Database\Database;
$db = $container->get(Database::class);
$rows = $db->select('SELECT * FROM users WHERE active = ?', [1]);
Session lifecycle, flash messages, handler bindings et intégration dans le request flow.
$session->set('user_id', 42);
Security primitives, CSRF protection, limites sûres du request processing et notes sur l’authentification.
<?= $helpers->csrfField() ?>
Aperçu de FormValidation, schema usage et pages dédiées à la description détaillée des règles de validation.
$result = $validator->field('email')->required()->email()->validate($payload);
Composant Debug avec dumper service, capture du context et sélection du renderer CLI/HTML.
dump($payload);
Intégration de robots.txt et sitemap.xml pour la découvrabilité technique du site.
$router->get("/sitemap.xml", ...);
Filesystem service, storage path helpers, file operations et écritures sûres pendant le runtime.
$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);
Upload service flow, file validation boundaries, storage strategies et exemples de traitement des fichiers.
$image = $this->upload()->uploadImage('avatar', 'avatar');
Benchmarking, request logging, tracing hooks et points d’intégration pour le diagnostic opérationnel.
$logger->info('Import started');
Helper utilities, support abstractions partagées et usage patterns recommandés à travers l’application.
$url = $helpers->url('documentation.show', ['path' => 'core']);