OOP vs Codice procedurale



Prima di addentrarci nello studio vero e proprio dei concetti e delle teorie della programmazione ad oggetti, è bene avere le idee chiare sulle differenze che questo modello di programmazione pone rispetto al più semplice modello procedurale.

Questo perché molti sviluppatori PHP che giungono a leggere questa guida, hanno molto probabilmente a disposizione un solido bagaglio di conoscenze sul codice procedurale, che è ancora il metodo preferito per la realizzazione di script ed applicazioni in PHP, soprattutto da chi ha amato e ama la versione 4. Ovviamente vi ricordo che, per una completa analisi delle differenze teoriche, dei vantaggi e degli svantaggi tra modello ad oggetti e modello procedurale, l'articolo Codice procedurale vs OOP è un ottimo punto di riferimento.

Wrapper per stampare

Partiamo subito con un esempio pratico che ci permetterà di cogliere le rispettive differenze concettuali dei due modelli: un wrapper per stampare un paragrafo HTML contente del testo.

Codice procedurale:

function ph($txt) {
        echo "<p>" . $txt . "</p>";
}

// stampa il seguente HTML: "<p>This is a paraghrap</p>"
ph("This is a paraghrap");

Codice OOP:

class HTML {

        public function ph($txt) {
                echo "<p>" . $txt . "</p>";
        }

}

$html = new HTML();

// stampa il seguente HTML: "<p>This is a paraghrap</p>"
$html->ph("This is a paraghrap");

La prima, lampante differenza che emerge dal confronto tra questi due snippet è la diversa quantità di codice necessaria per giungere allo stesso fine: il modello OOP ne richiede una quantità maggiore. La seconda differenza è che, mentre nel primo caso si può usare direttamente la funzione e quindi stampare il codice, nel secondo si deve prima istanziare un oggetto della classe HTML (il cui nome, come quello delle semplici variabili, è scelto a nostro piacimento) e successivamente richiamare il metodo denominato ph.

Ma vediamo cosa accade se successivamente decidiamo di aggiornare le funzionalità volendo creare un ulteriore wrapper al paragrafo risultante, ovvero un elemento div, ed ottenere il seguente markup: <div><p>This is a paraghrap</p></div>:

Codice procedurale:

function div($txt) {
        echo "<div>";
        ph($txt);
        echo "</div>";
}

// stampa il seguente HTML: "<div><p>This is a paraghrap</p></div>"
div("This is a paraghrap");

Codice OOP:

class HTML {

        public function ph($txt) {
                echo "<p>" . $txt . "</p>";
        }
        
        public function div($txt) {
                echo "<div>";
                $this->ph($txt);
                echo "</div>";
        }

}

$html = new HTML();

// stampa il seguente HTML: "<div><p>This is a paraghrap</p></div>"
$html->div("This is a paraghrap");

Come è possibile notare, nel caso del modello procedurale si deve procedere alla creazione di una nuova funzione che richiama la precedente, mentre nel modello OOP tutta l'implementazione è centralizzata in un unico oggetto: la classe HTML. Le istanze di questa classe (nel nostro caso l'oggetto $html) possono usufruire di tutte le funzioni pubbliche dichiarate nella stessa.

Conclusione

Dalla realizzazione di un compito assai banale come la visualizzazione di testo, abbiamo potuto prendere visione delle grandi differenze concettuali e pratiche che esistono tra i due modelli. Essere consci del fatto che tramite la OOP è possibile progettare codice concettualmente più elevato è basilare per affrontare le prossime lezioni.

Nella prossima lezione passeremo ad analizzare (teoricamente e praticamente) quelle che sono le componenti fondamentali della programmazione ad oggetti: le classi.

Ultimi articoli PHP

Sessioni PHP: cosa sono, come si usano

Dalla configurazione di PHP, alla gestione delle sessioni in un...

Continuous Integration: automatizziamo i client con Phing

Continuous Integration: automatizziamo i client con Phing. Esempi...

Archiviazione delle applicazioni PHP con Phar

Come incorporare intere applicazioni PHP all'interno di un singolo...

I traits in PHP 5.4

Cosa sono, a cosa servono e come si unsano i traits, la novità per...

PHP 5.4: il web server integrato

Impara ad usare il web server integrato nella versione 5.4 di PHP:...

Altri articoli

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Guida PHP con Windows e IIS

Installare ambienti per lo sviluppo e la produzione di applicazioni...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti