"Se ci sono due o più modi di fare una cosa,
e uno di questi modi può condurre a una catastrofe,
allora qualcuno la farà in quel modo.

(Edward Murphy)

Introduzione - Ma è proprio necessario un nuovo Framework?

Dom, 19/01/2014 - 15:42 -- arturu

Molte volte mi viene fatta una domanda: "Voglio imparare a sviluppare in PHP, come si fa?".

Ogni volta questa domanda mi mette in crisi, non so come rispondere, non perché non conosco l'argomento, il problema è la risposta. Lo sviluppo è una questione di scrittura, una questione di organizzazione, di conoscenze, di creatività, ecc. Sviluppare un qualsiasi applicativo non è soltanto scrivere "strani" codici dentro un editor, invece, è una questione di mentalità, di organizzazione del lavoro che si andrà a fare, il tutto condito con una buona dose di creatività. Organizzarsi non significa soltanto organizzare il presente ma anche pianificare il futuro, infatti, durante ogni fase progettazione/sviluppo/debug/mantenimento di un qualsiasi software bisognerà affrontare delle problematiche che in ambito informaticono sono conosciute fin dall'alba dei tempi.

Organizzazione e linee guida

Lo sviluppo di un qualsiasi software si compie in più fasi, a grandi linee: progettazione, sviluppo e test. In ognuna delle fasi di sviluppo ci troveremo ad affrontare dei problemi più o meno complessi, per fortuna, molto spesso la maggior parte di questi problemi sono conosciuti da tempo ed esitono soluzioni testate e stabili.

Durante tutto il libro cercheremo sempre di seguire alcune linee guida:

  1. Analizzare, Ricercare e Pensare: prima di scrivere dobbiamo sempre analizzare il problema, ricercare le strade percorse da altri sviluppatori e prendere delle decisioni in merito;
  2. Modularizzare: cerchiamo di sezionare un grande problema in piccoli problemi e fare un modulo software che risolva quel piccolo problema nella maniera più efficiente;
  3. Atomizzare: cerchiamo per ogni singola funzionalità di sviluppare piccole porzioni di codice e in caso sezionarle ulteriolmente;
  4. Riutilizzare: cerchiamo di strutturare il nostro codice in modo che sia più facilmente riutilizzabile.

A questo indirizzo terrò una copia del progetto https://github.com/arturu/Concerto

Spirito del libro

Questo libro/guida/tutorial, chiamatelo come volete, è indirizzato a chi già conosce gli elementi di base della programmazione procedurale (if, for, while, funzioni ecc.) ed ha una base di programmazione ad oggetti (classi, attributi, metodi, scope, ecc) ed inizia a sentire l'esigneza di organizzarsi, di non dover reninventare ogni volta la ruota, avverte la difficoltà di gestire progetti di media grandezza, vuole passare dal livello base ad un livello intermedio. Partendo dalle conoscenze base si cercherà di costruire un framework didattico utilizzando argomenti avanzati come i Patterns, ORM, ecc, le cosidette "best practices".

Di seguito i requisiti base per poter capire il libro in tutta tranquillità

  • Markup: HTML, CSS e JavaScript (ad un certo punto utilizzeremo Bootstrap e jQuery)
  • Concetti base di sviluppo in PHP (procedurale ed oggetti)
  • Sistema Operativo: Linux
  • Server: Apache, PHP, MySQL

Se pensi di non possedere questi elementi base, esistono migliaia di guide/libri che trattano l'argomento, una ricerca su google potrebbe aiutarti.

Molti si domanderanno: "Perché un altro libro sul PHP, ne sono stati scritti a tonnellate". Qualcuno disse "Non hai veramente capito qualcosa finché non sei in grado di spiegarlo a tua nonna", quindi, prima di tutto per imparare ad insegnare quello che attualmente so, poi per condividere le conoscenze in pieno spirito open source.

Obiettivi e Strategie

Molti si domanderanno "ma è proprio necessario un nuovo Framework?". Sinceramente no, non è necessario, esiste già Symfony e non c'è bisogno di reinventarlo. Faccio parte di quelle persone che pensano che l'avere degli obiettivi e qualcosa di concreto da fare contribuisca ad alimentare l'entusiamo, di conseguenza l'impegno nello studio. Chi non ha mai pensato di costruire un CMS o un Framework? Qualsiasi sviluppatore in erba ci ha pensato almeno una volta, ed è quello che faremo, svilupperemo un Framework in PHP con le più moderne tecniche di sviluppo. Il mio primo obiettivo è riuscire a completare questo libro, il secondo è riuscire a farmi capire, il terzo è riuscire a trasmettere una mentalità, infatti lo sviluppo software è più uno sforzo mentale che non amanuense.

Durante tutto il libro cercherò di usare una scrittura PHP molto semplice e striminzita in modo che sia molto facile capire ciò che succede, scriverò anche in Italiano (per quanto sia possibile).

Per costruire un software abbiamo bisogno di un problema, esso è: "Che cos'è un Framework?". Dopo varie ricerche (vi invito a farlo veramente, è il punto 1 delle linee guida), possiamo sintetizzare grossolanamente in: "Un Framework è una struttura software, un'organizzazione logica di codice, un insieme di librerie che risolvono i più comuni problemi legati allo sviluppo di un software permettendone il riutilizzo". Bella e arzigogolata definizione ma non ci aiuta molto. Inizialmente, dobbiamo cercare di rendere il problema meno complesso possibile. Pensandoci bene, possiamo semplificare. Possiamo dire che: "Un Framework riceve delle richieste, le analizza e restituisce un risultato". Bene, abbiamo tre macro-componenti da realizzare, mettiamoci subito all'opera.

Tutto lo sviluppo del framework sarà incentrato sul ragionamento, in quanto, la miglior linea di codice è quella che non si scrive. Mi spiego meglio, rispettare nel miglior modo le Best Pratictices ci permete di scrivere poco codice, solo quello necessario, in quanto la soluzione a molti problemi è insita all'organizzazione stessa.

Nome del Framework: Concerto

Come ogni software che si rispetti anche il nostro dovrà avere un nome. Da buoni musicisti il nostro framework si chiamerà: "Concerto"; in cui noi sviluppatori siamo il compositore, i vari moduli sono singole parti che devono essere suonate dai nostri utenti. Ciò che "udiamo" è l'unione delle singole parti che noi abbiamo composto.