erebox/flightphp-wire

Convenzioni di progetto su FlightPHP: bootstrap, controller base, routing via attributi, generatore OpenAPI.

Maintainers

Package info

github.com/erebox/flightphp-wire

pkg:composer/erebox/flightphp-wire

Transparency log

Statistics

Installs: 4

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.1 2026-07-30 10:04 UTC

This package is auto-updated.

Last update: 2026-07-30 10:05:41 UTC


README

flightphp-wire

Convenzioni di progetto condivise fra i siti basati su FlightPHP:

  • core\Bootstrap inizializza l'engine Flight (path dei controller, config da data/config.json, censimento controller, registrazione route).
  • core\controllers\BaseController / BaseWebController / BaseApiController sono le classi base da cui estendere i controller del sito; il tipo di classe base determina la classificazione automatica (web vs API).
  • core\attributes\Route è l'attributo PHP con cui annotare i metodi dei controller per dichiarare path, verbo HTTP, middleware e metadati OpenAPI.
  • core\helpers\ControllerScanner, AttributeRouteRegistrar e OpenApiGenerator gestiscono rispettivamente il censimento dei controller, la registrazione delle route e la generazione dello spec OpenAPI.
  • core\middlewares\WebHeader e ValidateApikey sono i middleware di default applicati rispettivamente alle route web e API.
  • core\controllers\DefaultRouteController fornisce le route di default: / (homepage), /api (Swagger UI) e /api/openapi (spec generata). Bootstrap::init le registra sempre, ma salta quelle il cui path+metodo è già dichiarato da un controller del sito: un sito può quindi sovrascrivere una singola route (es. solo /) senza perdere le altre. Le viste index.html/swagger.html sono quelle del sito se presenti in app/views, altrimenti vengono usate quelle di default incluse nella libreria (src/views).

Installazione

composer require erebox/flightphp-wire

Uso

Nel file di ingresso del sito (es. index.php):

require 'vendor/autoload.php';
use core\Bootstrap;

$app = Bootstrap::init(__DIR__.'/app', 'app\\controllers');
$app->start();

Bootstrap::init si aspetta la convenzione comune ai siti: controller in app/controllers (che estendono BaseWebController/BaseApiController), route dichiarate con l'attributo Route, config in data/config.json.