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.
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.
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.
Sessioni PHP: cosa sono, come si usanoDalla configurazione di PHP, alla gestione delle sessioni in un... |
Continuous Integration: automatizziamo i client con PhingContinuous Integration: automatizziamo i client con Phing. Esempi... |
Archiviazione delle applicazioni PHP con PharCome incorporare intere applicazioni PHP all'interno di un singolo... |
I traits in PHP 5.4Cosa sono, a cosa servono e come si unsano i traits, la novità per... |
PHP 5.4: il web server integratoImpara ad usare il web server integrato nella versione 5.4 di PHP:... |
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Guida PHP con Windows e IISInstallare ambienti per lo sviluppo e la produzione di applicazioni... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |