Framework PHP

Ogni framework PHP ha un compito in cui dà il meglio.

Sviluppiamo, recuperiamo e ospitiamo applicazioni con tutti questi framework, e in PHP puro che non ha mai avuto un framework, con un team che scrive PHP da venticinque anni.

Quale framework è adatto al tuo progetto

Rispondi a due domande. Ogni percorso finisce dove inizieremmo noi, e dice quando sceglieremmo altro.

Da cosa parti?

Un nuovo progetto

Cosa conta di più?

Un grande sistema su cui lavoreranno più team per anni

Da dove partiremmo

Symfony

Configurazione esplicita, un container di dependency injection, versioni con supporto a lungo termine e Doctrine per i dati. La struttura regge anche quando arriva il quinto sviluppatore.

Valuta anche Laminas se l'azienda usa già codice Zend Framework.

Un prodotto da lanciare presto, con un team piccolo

Da dove partiremmo

Laravel

Autenticazione, code, email, pianificazione e un ORM espressivo già inclusi, con un'unica convenzione per tutto.

Laravel da EGPHP
Un'API o un piccolo servizio con un solo compito

Da dove partiremmo

Slim

Routing, middleware e richieste PSR-7 standard, e niente che tu non abbia chiesto. Il livello dati e il container li scegli tu.

Se l'API crescerà fino a diventare un prodotto completo, Laravel o Symfony evitano una riscrittura più avanti.

Una piccola applicazione su un server modesto

Da dove partiremmo

CodeIgniter

Ingombro ridotto, poca configurazione e documentazione chiara. Funziona bene dove le risorse sono scarse.

Molte schermate di dati, generate in fretta dal database

Da dove partiremmo

Yii · CakePHP

Yii genera modelli e schermate CRUD con Gii; CakePHP le crea con bake a partire dalle sue convenzioni. Entrambi trasformano uno schema in schermate funzionanti in poco tempo.

Il minimo overhead del framework a ogni richiesta

Da dove partiremmo

Phalcon

Il framework è un'estensione compilata in C, quindi a ogni richiesta gira pochissimo PHP. Richiede che l'estensione sia installata sul server: sui nostri la installiamo noi.

Molti hosting condivisi non consentono estensioni PHP. Verificalo prima di sceglierlo.

Un'applicazione che esiste già

Su cosa è costruita?

PHP puro senza framework, o una versione di PHP molto vecchia

Da dove partiremmo

Prima il recupero

Prima di tutto la rendiamo sicura e aggiornata, poi decidiamo insieme se vale la pena adottare un framework.

Come si svolge un recupero
Basata su un framework, e funziona

Da dove partiremmo

Mantenere il framework

La aggiorniamo, la mettiamo in sicurezza e la estendiamo nel framework in cui è stata scritta. Riscriverla è l'ultima risorsa, non la prima.

Basata su un framework che vuoi abbandonare

Da dove partiremmo

Migrare per gradi

La vecchia e la nuova applicazione girano affiancate, e le rotte passano da una all'altra una alla volta mentre l'attività continua a lavorare.

Come si svolge una migrazione

A confronto

Cos'è ogni framework, in cosa eccelle e quando ci penseremmo due volte. Nessuno è sbagliato; ognuno è giusto per un lavoro diverso.

Framework PHP a confronto
Framework Cos'è Livello dati Punto di forza Pensaci due volte se
Symfony Framework full-stack e componenti riutilizzabili Doctrine ORM Sistemi grandi e longevi, con versioni a supporto a lungo termine Un piccolo sito deve andare online questa settimana
Laravel Framework full-stack Eloquent Lanciare in fretta un prodotto, con code, autenticazione ed email integrate Vuoi collegare ogni pezzo in modo esplicito
CodeIgniter Framework full-stack leggero Query builder e modelli semplici Ingombro ridotto su server modesti Il progetto ha bisogno di un grande ecosistema di pacchetti
Yii Framework full-stack Active Record Schermate ricche di dati generate con Gii, e caching Il tuo team non lo conosce; la sua community è più piccola
CakePHP Framework full-stack CakePHP ORM Convenzione anziché configurazione, e codice generato dallo schema L'applicazione va contro le sue convenzioni a ogni passo
Laminas Componenti, framework MVC e middleware; il successore di Zend Framework laminas-db o Doctrine Sistemi aziendali già costruiti su Zend Framework Un piccolo progetto nuovo vuole muoversi in fretta
Slim Microframework Nessuno integrato: a tua scelta API e piccoli servizi L'applicazione ha bisogno di sessioni, form e un pannello di amministrazione dal primo giorno
Phalcon Framework full-stack distribuito come estensione C ORM di Phalcon con PHQL Overhead molto basso per richiesta Il tuo hosting non consente di installare estensioni PHP

Laravel stesso si basa su diversi componenti Symfony, e la maggior parte di questi framework condivide gli stessi standard PSR: spostare codice dall'uno all'altro richiede meno lavoro di quanto sembri.

Vecchio PHP, rimesso in forma

Il codice scritto anni fa fa ancora guadagnare molte aziende. Lo rendiamo sicuro e aggiornato senza spegnerlo.

- $id = $_GET['id'];- $r = mysql_query("SELECT * FROM orders WHERE id = $id");- $order = mysql_fetch_assoc($r);+ $stmt = $pdo->prepare('SELECT * FROM orders WHERE id = ?');+ $stmt->execute([(int) $_GET['id']]);+ $order = $stmt->fetch(PDO::FETCH_ASSOC);
Le funzioni mysql_ sono state rimosse in PHP 7. Questa sola modifica fa funzionare la pagina con il PHP attuale e, allo stesso tempo, chiude una SQL injection.
  1. Leggerla e farla girare

    Una copia dell'applicazione in funzione su un server aggiornato, e un elenco scritto di ciò che si rompe.

  2. Test su ciò che funziona

    Test che registrano cosa fanno oggi le pagine, così una modifica che ne rompe una viene individuata subito.

  3. PHP aggiornato per gradi

    Una versione alla volta, con Rector per le modifiche meccaniche e PHPStan per trovare ciò che gli è sfuggito.

  4. Prima la sicurezza

    Prepared statement, output con escape, password ricalcolate con un nuovo hash, e sessioni e upload blindati.

  5. Poi, se conviene, un framework

    Le nuove funzionalità nascono in un framework accanto al vecchio codice, e le vecchie pagine migrano man mano che vengono toccate.

Passare da un framework all'altro, una rotta alla volta

Non fermiamo l'attività per una riscrittura. La vecchia e la nuova applicazione stanno dietro un unico web server, e ogni rotta passa alla nuova quando la sua sostituta è pronta.

  • /api/orders Nuova applicazione Spostata
  • /account Nuova applicazione Spostata
  • /checkout Nuova applicazione In test
  • /reports Vecchia applicazione In attesa
  • /admin Vecchia applicazione In attesa
Un esempio di migrazione, a metà strada.

Il cambio è una riga per rotta

# nginx
location /api/orders { proxy_pass http://new; }
location /account    { proxy_pass http://new; }
location /checkout   { proxy_pass http://new; }
location /           { proxy_pass http://old; }

Una rotta che si comporta male torna alla vecchia applicazione con la stessa modifica di una riga, mentre la sistemiamo.

Raccontaci cosa hai in funzione

Il framework, la versione di PHP e cosa ti preoccupa bastano per iniziare. Ogni progetto viene preventivato dopo una breve conversazione.