E' arrivata l'estate HOT! Sconti fino al 70% su tutti i corsi!
Davide Copelli WebSU

Programmazione PHP ad oggetti o Procedurale?

Articolo a cura di: Davide Copelli {ing}

Facebook

La programmazione ad oggetti, traslata nel mondo web, ha da sempre suscitato vere e proprie "guerre" verbali, tra chi sostiene una tesi e chi quella opposta. E' uno di quegli argomenti che, da quando il PHP ha aggiunto tra le proprie caratteristiche quelle di poter creare degli oggetti, suscita accese prese di posizione, spesso originate dall'acerba età di chi si cimenta in queste argomentazioni. C'è chi sostiene che, senza la programmazione ad oggetti in PHP, non potresti creare alcun progetto complesso, e chi invece, che è assurdo programmare ad oggetti per inviare una semplice email senza allegati, con il riepilogo dei dati provenienti da un modulo web.

Nel corso di più di 20 anni di attività nel mondo della programmazione, dall'assembly, al Pascal, agli esordi sul web con il linguaggio perl e cgi, fino ai nostri giorni, anche a me sono arrivate spesso email a riguardo, ma fortunatamente, il buon senso mi ha sempre guidato, nel consigliare la strada più opportuna per i miei corsisti. E il buon senso è quello che mi ha insegnato uno stravagante "washing-up" Francesce conosciuto a Londra, che fin dal mio primo giorno di lavoro come lavapiatti al Novotel di Londra, mi disse subito: "Take it easy, David".

Dopo pochi giorni di lavoro, e tre turni notturni, capii il senso della frase, perchè riuscii a constestualizzarla alle attività che ogni giorno dovevamo fare, e soprattutto, ai colleghi con cui dovevamo farle.

A chi allora pensa che la sola è unica strada maestra per imparare il PHP sia imparare a programmare ad oggetti, oggi replico: "Take it easy, ragazzo. Impara prima il PHP e la logica procedurale. Presto capirai il perchè!".

OOP is not a better way to program, just a different way. In some cases, it may be better and in some cases worse (Larry Ullman)

Programmare ad oggetti è una vera e propria arte, che spesso viene orrendamente banalizzata riducendola a mera sintassi, giusto per cercare di farla capire alla gente. Quante volte ho visto spiegare cosa sia una classe, cosa sia un oggetto, e cosa sia l'ereditarietà, usando come esempi di codice, quelli della relazione specie e uomo?

Ci vuole molta fantasia nel capire come applicare questi concetti allo sviluppo di un applicativo che deve recuperare dati da un database. Putroppo però questo è l'approccio che tutti fanno alla programmazione ad oggetti, e i risultati li ho visto in passato, quando dovevo mettere le mani a codice scritto da persone formatesi, con il concetto di "macchina" e "specie umana".

Programmare ad oggetti è una filosofia di programmazione che parte dall'astrazione di un problema, dall'individuazione di tutti gli oggetti coinvolti nei diversi passaggi di funzionamento di un software o sito web. Questo vincola di molta la nostra capacità intrinseca di pensare con la logica della programmazione ad oggetti, ma ciò non toglie, che i dati spesso diventino il cuore di ogni applicazione.

Tutti noi nella vita quotidiana, compiamo azioni, una in successione dell'altra, quindi teoricamente ognuno di noi ha nel proprio DNA, la logica che sta alla base della programmazione procedurale. Lo stesso linguaggio PHP, NON è nato come linguaggio ad oggetti, ma questa funzionalità è stata aggiunta solo pochi anni dopo, per implementare delle funzioni interne al linguaggio, che potessero agevolare il compito del programmatore. Solo a partire dalla versione 5.1, iniziò ad affacciarsi la sintassi per costruire i proprio oggetti.

Lo scopo del PHP, che dopo le prime versioni, prese il nome di PHP: Hypertext Preprocessor, infatti era di sviluppare singole pagine web, che mescolassero sezioni di codice HTML con sezioni di codice PHP, in modo da poter creare, quelle che presero il nome di pagine web dinamiche, ossia pagine "consumate" dal browser come normali pagine HTML, ma originate da un mix di codice HTML e PHP intepretato dal server.

E' questa la caratteristica del PHP che lo ha reso così famoso tra gli sviluppatori e ne ha decretato un successo a livello mondiale. Ad esempio il famoso software Wordpress, che sta alla base della creazione di oltre il 30% di tutti i siti web e blog su piattaforma Linux, è progettato usando proprio il linguaggio PHP, e il cuore del software, ha ancora una struttura con sintassi procedurale.

Come avviene per tutte le cose di successo, anche per il PHP si è cercato di aggiungere quelle funzionalità che rendessero la progettazione di applicazioni e software, meno complessi a livello di gestione e manutenzione, e questo ha portato all'aggiunta proprio delle funzionalità legate al mondo della programmazione ad oggetti.

A differenza di altri linguaggi, lo sviluppatore PHP ha, sia la possibilità di sviluppare seguendo lo stile procedurale, sia seguendo lo stile ad oggetti, o meglio, applicando le regole alla base della costruzione di sofware ad oggetti. Questo non è possibile con altri linguaggi, come per esempio Java, che è fortemente orientato agli oggetti, quindi difficile da imparare per chi è alle prime armi.

Sicuramente la programmazione procedurale è più veloce da imparare e usare, come dicevo, proprio perchè consiste nel mettere insieme in sequenza, tutto un insieme di istruzioni, da eseguire una dopo l'altra. Ci possono venire in aiuto le funzioni per rendere il codice più leggibile, ma uno dei grossi problemi di questo approccio è legato alla dimensione del progetto che si sta creando, inteso come numero di programmatori che ci lavorano.

Nel lavoro di team, spesso infatti si ha la necessità di lavorare sul codice, in modo indipendente da quello che sta facendo il collega. Avendo un insieme di oggetti comuni, preventivamente progettati, si riesce a sviluppare codice più facile da testare e modificare.

La programmazione ad oggetti però, se applicata senza aver pensato e ripensato al progetto, può portare a dei veri e propri disastri, con conseguente impossibilità di proseguire, senza rifare gran parte del codice.

Insomma, dopo 20 anni di programmazione, posso avanzare una mia personale opinione, che potrai convenire o meno, ossia che per piccole cose, come un backup di una database, un controllo di dati, la creazione di una pagina web, la programmazione procedurale è la benvenuta, mentre per lo sviluppo di interi software, a più mani, certamente la programmazione ad oggetti, può avere i propri vantaggi ed è da consigliare.

Scopri di più sulla programmazione ad oggetti in PHP nella prossima uscita aggiornata a PHP7, del corso: Tecniche di programmazione ad Oggetti in PHP7

WebStartUniversity
WebStartUniversity

Ricevi le anteprime dei nuovi corsi! Iscriviti Gratuitamente

Cliccando su Iscriviti, accetti le nostre condizioni d'uso e la politica sulla privacy

×