Dall'instradamento delle richieste HTTP all'accesso al database e al rendering dell'interfaccia utente, la maggior parte delle applicazioni web ha molto in comune l'una con l'altra. Molti di loro consentono ai loro visitatori di accedere, ed è difficile immaginare un'applicazione web senza l'invio di e-mail.
Un framework software è un modo per mettere in pratica questa osservazione.
Estraendo i tratti comuni e l'architettura sottostante dell'applicazione e raggruppandoli in un modello riutilizzabile e in una raccolta di librerie, un framework consente agli sviluppatori di concentrarsi su ciò che distingue il loro progetto.
Infatti, quando si utilizza il progetto precedente come un boilerplate anziché partire da zero, si sta già utilizzando un framework ad-hoc. I famosi framework PHP, come Laravel, Yii o Symfony, adottano questo approccio alla sua logica conclusione ponendo un forte focus sulla progettazione dell'architettura e degli strumenti del framework e quindi rendendolo disponibile per altri sviluppatori da utilizzare nei loro progetti.
Ma usare sempre un framework è il modo migliore per andare, o talvolta ha senso solo per iniziare da zero usando nient'altro che un semplice PHP?
Per rispondere alla domanda, in questo tutorial, esamineremo cinque pro e contro dell'utilizzo di un framework PHP.
Iniziamo osservando come utilizzare un framework PHP può aiutarti nello sviluppo delle tue applicazioni.
Nelle start-up di oggi basate sulla sperimentazione, sulla prototipazione rapida e sul lancio del prodotto minimo possibile nel mondo il più velocemente possibile, la velocità di sviluppo può essere ciò che fa o spezza il tuo business.
L'utilizzo di un framework PHP è un modo per rispondere a questo requisito.
Un framework PHP ben progettato seleziona le migliori implementazioni per problemi comuni dalla comunità open-source e, basandosi su di esse, fornisce un'architettura dell'applicazione (nella maggior parte dei casi, basata sul modello Model-View-Controller) per guidare il tuo sviluppo.
In questo modo, invece di dedicare tempo alla pianificazione dell'architettura dell'applicazione e alla valutazione delle varie librerie disponibili, è possibile iniziare da un modello completamente funzionale, se nudo, e arrivare alla creazione delle funzionalità specifiche dell'applicazione. Molti framework PHP dispongono anche di uno strumento da riga di comando che è possibile utilizzare per generare codice e risparmiare più tempo prezioso per lo sviluppo.
Oltre a velocizzare lo sviluppo, un framework può anche renderti più sicuro: stai lavorando in fretta, ma ciò non avviene intromettendoti con soluzioni rapide e sporche ma utilizzando best practice comprovate e componenti già pronti.
Le soluzioni incluse in un moderno framework PHP sono continuamente testate e sottoposte a peer review e convalidate da più sviluppatori che utilizzano il framework. Poiché i framework sono open source, i problemi di sicurezza e altri problemi che potresti trascurare nel tuo codice proprietario vengono rapidamente rilevati e risolti.
Detto questo, è importante ricordare che l'utilizzo di un framework non significa che si possa dimenticare tutto della sicurezza e delle buone pratiche di sviluppo. Assicurati di utilizzare il framework come è stato concepito per essere utilizzato, mantienilo aggiornato e fai la tua parte in cose come la validazione dei parametri, usando gli strumenti dei framework, non è poi così difficile.
Fornendo una struttura sonora per la tua applicazione e spingendoti verso le migliori pratiche e schemi di sviluppo del software, un framework PHP ti guida verso la scrittura di codice che è liberamente accoppiato e si ripete il meno possibile. In altre parole, è facile da leggere, testare, mantenere e sviluppare ulteriormente.
Praticamente tutti i framework PHP popolari oggigiorno sono orientati agli oggetti e sviluppati con test automatici e persino lo sviluppo basato sui test.
Dovrai comunque fare la tua parte. Ma rispetto a partire da zero, un framework e la sua documentazione che ti ricordano i concetti e ti spingono a usarli sicuramente ti aiuteranno.
Un altro modo in cui l'utilizzo di un framework rende più semplice la manutenzione dell'applicazione è attraverso i suoi componenti condivisi. Poiché le librerie e gli helper del framework sono sviluppati indipendentemente dall'applicazione, è possibile scaricare gran parte della manutenzione dell'applicazione per gli sviluppatori del framework.
In un certo senso, è come avere un team di sviluppatori che lavora per te, gratuitamente!
Come sviluppatore, conosci a memoria le tue classi e funzioni e puoi usarle facilmente. Ma quando porti membri del team, la situazione cambia.
Senza la conoscenza delle decisioni di progettazione e della documentazione completa (diciamocelo: specialmente nel mondo del rapido sviluppo, la documentazione è spesso un ripensamento), troveranno difficile comprendere il codice dell'applicazione.
L'utilizzo di un framework PHP aiuterà a rendere più facile per i nuovi sviluppatori iniziare a lavorare sul progetto. È probabile che abbiano già familiarità con il framework e possano dedicare tutta la loro attenzione alla comprensione delle specifiche dell'applicazione. E anche se il framework è nuovo per loro, la documentazione, i tutorial online e gli schemi di progettazione familiari li aiuteranno a diventare più veloci con il minimo sforzo.
Tutto questo mentre puoi continuare a lavorare sull'applicazione piuttosto che insegnare agli sviluppatori i tuoi modi di pensare.
Infine, un vantaggio significativo dell'utilizzo di un framework PHP proviene dalle comunità attive di sviluppatori e utenti che si riuniscono attorno a loro.
Tutti i principali framework attirano contributori open-source che, oltre a lavorare sul framework stesso, sviluppano ulteriori widget, librerie e componenti helper da includere nelle loro applicazioni. Altri contributori scrivono tutorial e libri o creano video per spiegare i dettagli di come usano i framework in progetti reali.
Come parte di una tale comunità di sviluppatori, crescerai come sviluppatore, imparando rapidamente e applicando ciò che apprendi nello sviluppo delle tue applicazioni.
E se sei così incline, puoi restituire e partecipare ai progetti open source in qualsiasi modo che ti sembra naturale e appagante.
Ora che abbiamo visto come l'utilizzo di un framework PHP può aiutarti nel tuo sviluppo, diamo un'occhiata agli aspetti negativi e perché andare senza uno potrebbe a volte essere l'opzione migliore.
Rispetto all'esecuzione di un semplice script PHP, un framework PHP aggiunge sempre complessità e sovraccarico sotto forma di classi e librerie caricate prima che il codice venga persino chiamato. La differenza può essere significativa negli script rapidi e nelle API con un set limitato di funzionalità che deve essere eseguito rapidamente.
Nella maggior parte delle applicazioni Web, tuttavia, le implicazioni di efficienza di un framework hanno più a che fare con il modo in cui lo si utilizza rispetto al framework stesso. Ad esempio, mentre un'implementazione di Active Record è un modo pratico per accedere al database, non ha senso utilizzarlo in luoghi in cui devi lavorare su più righe nel database contemporaneamente.
Quindi si tratta di conoscere le esigenze della tua applicazione, ma anche di non lasciarti attaccare a un modo specifico di usarlo. A volte, anche quando si lavora con un framework, ha senso scavalcare e scrivere parte del codice a un livello di astrazione più basso.
L'idea di un framework PHP deve essere una soluzione generale per i requisiti ricorrenti che la maggior parte degli sviluppatori dovrà affrontare nello sviluppo di un'applicazione web. Ma dove dovremmo tracciare la linea in cosa includere nel framework e cosa lasciare per le applicazioni - o add-on di terze parti - per implementare?
Secondo alcuni sviluppatori, questo è il posto in cui molti framework vanno male.
Il creatore di PHP, Rasmus Lerdorf, ha dichiarato:
"Nessuno ha un problema generale. Ognuno ha un problema molto specifico che stanno cercando di risolvere. E un framework per scopi generali, mentre può risolverlo, di solito lo risolve in modo tale da ottenere così tante altre cose di cui non hai bisogno. Questo finisce per essere fatto su ogni richiesta. "
Per questo motivo, se si decide di utilizzare un framework, è importante assicurarsi di sceglierne uno che soddisfi le esigenze dell'applicazione.
Sebbene la maggior parte dei framework sia basata sul caricamento lento e non includa le parti del framework che l'applicazione non utilizza, la complessità aggiuntiva sarà ancora presente, portando ad inutili armeggiare nella rimozione della funzionalità fornita con il framework ma che non si utilizza ne ho bisogno.
Mentre una struttura PHP ti spinge verso un buon codice, non ne è la garanzia. Se lavori con un framework senza comprenderlo e gli schemi di progettazione che lo seguono, molto probabilmente finirai con un pasticcio grande e strutturato.
Per qualcuno che ha già familiarità con questi principi di progettazione, da altri quadri o progetti, la curva di apprendimento sarà relativamente breve. Per uno sviluppatore con meno esperienza, l'apprendimento richiederà più tempo. Per non parlare del controllo del framework.
Quindi, se sei di fretta - e il tuo progetto è piccolo - potrebbe non essere il momento di iniziare a imparare un nuovo quadro. Invece, si consideri l'utilizzo di un micro-framework o addirittura l'avvio da zero e l'utilizzo di alcune librerie con cui si ha familiarità.
Quindi, prenditi il tempo necessario per apprendere una struttura PHP completa quando la tua pianificazione lo consente.
L'utilizzo di un framework software porta lo sviluppo dell'applicazione a un livello più alto di astrazione. Questo è di design, e di solito è una buona cosa. Tuttavia, è bene rendersi conto che anche questo può portare a problemi.
Mentre molte parti del modello del framework devono essere personalizzate, il nucleo del framework e le sue librerie sono come una scatola nera che usi ma che non hanno molto controllo. Puoi suggerire miglioramenti, ma alla fine spetta agli sviluppatori del framework decidere se includere o meno tale modifica.
Inoltre, se inizi a utilizzare un framework prima di comprendere appieno il linguaggio PHP stesso, potresti confondere le funzionalità del framework con le funzionalità del linguaggio e finirai per utilizzare le funzionalità del framework anche quando PHP semplice sarebbe una scelta migliore.
Un framework è sempre una dipendenza esterna per il codice dell'applicazione controllata da qualcuno diverso da te e dal tuo team. Anche se questo di solito non è un problema, è qualcosa che vale la pena considerare se il software che stai creando è una parte fondamentale della tua attività.
Chiediti che cosa farai se lo sviluppo del framework viene abbandonato o si muove in una direzione che non vuoi seguire.
Un buon modo per mitigare questo rischio è utilizzare un framework affidabile e popolare con una comunità attiva di sviluppatori e utenti. Ma anche in questo caso, è qualcosa su cui riflettere: i vantaggi dell'uso di un framework abbastanza grande da rendere il rischio degno di essere preso?
Un moderno framework PHP è uno strumento potente nel tool tool di uno sviluppatore di software: può farti risparmiare tempo e fatica e ti offre la massima tranquillità mentre sviluppi la tua applicazione PHP. Ricorda solo che questo non dovrebbe sostituire prima l'apprendimento del core PHP!
La chiave nella conclusione sopra, tuttavia, sta selezionando lo strumento giusto per il lavoro. Ogni progetto è diverso, e persino un quadro perfetto per un progetto potrebbe non essere del tutto corretto per il prossimo. Vai alla semplicità e chiediti se una struttura completa è giusta per il progetto, o se utilizzare un microstruttura come Lumen potrebbe essere una soluzione migliore.
Partire da zero usando vanilla PHP è raramente l'opzione migliore, ma vale la pena considerare anche quando si sviluppa un'applicazione molto semplice (come un sito web senza molta interattività) e ricorda che puoi sempre estenderlo usando Composer per selezionare le librerie del tuo la scelta.
Quando selezioni un framework, assicurati che il framework che scegli sia attivamente sviluppato e supportato e segua le solide pratiche di ingegneria del software. In questo modo, proteggi la tua applicazione a prova di futuro assicurandoti che il framework sottostante non subisca una morte silenziosa.
E infine, anche se decidi di non usarne uno, è una buona idea familiarizzare con uno o più dei moderni framework PHP. Studiarli è un modo eccellente per imparare e migliorare il tuo mestiere nello sviluppo di software e aiutarti a rimanere al passo con il mondo in continua evoluzione dello sviluppo di PHP.