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 EGPHPUn'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 recuperoBasata 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 migrazioneA confronto
Cos'è ogni framework, in cosa eccelle e quando ci penseremmo due volte. Nessuno è sbagliato; ognuno è giusto per un lavoro diverso.
| 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);
Leggerla e farla girare
Una copia dell'applicazione in funzione su un server aggiornato, e un elenco scritto di ciò che si rompe.
Test su ciò che funziona
Test che registrano cosa fanno oggi le pagine, così una modifica che ne rompe una viene individuata subito.
PHP aggiornato per gradi
Una versione alla volta, con Rector per le modifiche meccaniche e PHPStan per trovare ciò che gli è sfuggito.
Prima la sicurezza
Prepared statement, output con escape, password ricalcolate con un nuovo hash, e sessioni e upload blindati.
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/ordersNuova applicazione Spostata -
/accountNuova applicazione Spostata -
/checkoutNuova applicazione In test -
/reportsVecchia applicazione In attesa -
/adminVecchia applicazione In attesa
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.