Lemonade Framework

Un framework PHP basato sugli standard PSR per runtime web e CLI.

Una base modulare per PHP 8.1+ con PSR HTTP, PSR logging, container compatibile PSR-11, routing, views, layer database, sessions, validazione, upload e comandi CLI.

Runtime basato su PSRBootstrap condiviso per web e CLIBase a componenti
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 basato su PSR

HTTP messages, middleware, factories, logging, integrazione del client HTTP e DI container rispettano i contratti PSR dove ha senso.

Bootstrap condiviso per web e CLI

Web request e comandi CLI condividono la stessa configurazione, il modello provider e il container, con entrypoint separati Kernel e CliKernel.

Base a componenti

Routing, views, layer database, sessions, validazione, upload, security, events, queues e documentazione sono organizzati come componenti framework espliciti.

Components

Componenti del framework

Panoramica delle principali parti integrate che costituiscono la base per applicazioni web, progetti CMS, interfacce di amministrazione e sistemi di integrazione.

Core

Application Core

ApplicationContext, kernels, runtime lifecycle, caricamento della configurazione e orchestrazione dei service providers.

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

CLI Runtime

CLI entrypoint, lifecycle del CliKernel, command registry, exit codes e cron pattern con lock.

component.php
vendor/bin/lemonade list
Documentazione
Core

Localization

Resolving della locale corrente, caricamento delle traduzioni, fallback strategy e applicazione della lingua durante il runtime.

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

Dependency Injection Container

Service lifetimes, bindings, aliases, dependency resolution e pattern pratici per la registrazione dei servizi.

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

Registered Services

Strategia di registrazione dei servizi nel DI. Registrazioni provider-specific ed esempi pratici sono suddivisi nelle sottopagine.

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

HTTP Layer

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

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

API del framework

L’applicazione dispone di un livello API del framework con un endpoint di health check, una specifica OpenAPI e una semplice documentazione HTML.

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

Middleware

Middleware contracts, ordine di processing, intercettazione del request/response flow e regole di composizione.

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

HTML Minification

Comportamento del HTML response minification middleware, safety guards e punti di integrazione.

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

Routing

Router con route esplicite e convention routes, named URL generation, route groups e middleware stack.

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

View Rendering

Wiring del view engine, shared variables, component integration e rendering workflow.

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

UI Components

Presentation blocks riutilizzabili registrati tramite service providers ed esposti tramite ComponentRegistry.

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

Database Layer

Database infrastructure condivisa, provider boundaries, schema API e utilizzo pratico di base.

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

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

Session

Session lifecycle, flash messages, handler bindings e integrazione nel request flow.

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

Security

Security primitives, CSRF protection, confini sicuri del request processing e note sull’autenticazione.

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

Validation

Panoramica di FormValidation, schema usage e pagine dedicate alla descrizione dettagliata delle validation rules.

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

Debug

Componente Debug con dumper service, cattura del context e selezione del renderer CLI/HTML.

component.php
dump($payload);
Documentazione
SEO

Discovery

Integrazione di robots.txt e sitemap.xml per la reperibilità tecnica del sito.

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

Filesystem

Filesystem service, storage path helpers, file operations e scritture sicure durante il 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);
Documentazione
Files

Upload

Upload service flow, file validation boundaries, storage strategies ed esempi di processing dei file.

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

Observability

Benchmarking, request logging, tracing hooks e punti di integrazione per la diagnostica operativa.

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

Support Utilities

Helper utilities, support abstractions condivise e usage patterns consigliati nell’applicazione.

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