Prima della versione 5, PHP è stato un linguaggio sostanzialmente procedurale. Era in realtà dotato di un singolare modello ad oggetti, ma assolutamente incompleto e tale da non permettere l'applicazione dei concetti base della OOP: la Programmazione Orientata agli Oggetti.
Ora PHP dispone di un solido modello OOP, completo di tutti i più importanti strumenti che questo paradigma è in grado di offrire, anche se con alcuni limiti di carattere strutturale.
A differenza di altri linguaggi che sfruttano il paradigma OOP come Java, che nascono per applicazioni general purpose, PHP è un linguaggio di tipo Web oriented e presenta dei limiti sia nell'architettura che nella sintassi. Questo è il motivo per il quale, quando si tratta di PHP, sarebbe meglio non parlare di "Programmazione Orientata agli Oggetti" ma di "programmazione in stile OOP".
Cosa è la programmazione ad oggetti?
La Programmazione Orientata agli Oggetti, è un paradigma di programmazione in cui, a differenza di quello "procedurale", il flusso del programma non è gestito tramite chiamate a procedura sequenziali, ma è rappresentato dalla interazione e dallo scambio di messaggi tra oggetti.
Questo stile di programmazione, utilizza le classi per organizzare le strutture dei dati e le procedure che operano su di esse. Questo permette di creare un "oggetto" composto da due entità:
- metodi (le procedure);
- attributi (i dati).
Il paradigma OOP, risulta molto utile nella strutturazione di programmi di grandi dimensioni, permettendo la separazione tra dati e logica applicativa e utilizzando il principio di progettazione DRY (Do not Repeat Yourself), criterio secondo il quale andrebbe evitata ogni forma di ripetizione e ridondanza logica nell'implementazione del sorgente.
Alcune peculiarità della OOP, come l'architettura, la maggiore chiarezza e linearità del codice ad oggetti rispetto a quello procedurale, permettono di ottenere un sorgente modulare e facile da modificare. Inoltre la OOP consente di gestire meglio gli errori e semplifica il debugging.
Tra gli altri vantaggi della programmazione ad oggetti vi sono:
Vantaggio | Descrizione |
---|---|
Riusabilità | Utilizzo di parti di codice già sviluppate con relativi vantaggi nei tempi di sviluppo e scrittura. |
Refactoring | Permette di migliorare la progettazione o la struttura del codice esistente senza alterarne le funzionalità. |
Modularità | Suddivisione del programma in singole parti (oggetti) indipendenti, che interagiscono tra di loro. |
Estendibilità | Possibilità di aggiungere nuove funzionalità, riducendo le modifiche necessarie e senza compromettere il funzionamento del programma. |
Manutenzione | La OOP, utile soprattutto nella strutturazione di programmi complessi, facilita le modifiche e la manutenzione. |
Efficienza | Gli oggetti, grazie alla modularità, riusabilità ed alla struttura del codice, portano ad un incremento della produttività. |
Scopo e obiettivi della guida
Questa guida ha lo scopo di descrivere tutti i concetti fondamentali della programmazione ad oggetti in PHP, consentendo allo sviluppatore di realizzare applicazioni object oriented con il linguaggio PHP. La trattazione verrà sostanzialmente divisa in due parti:
- una parte teorica dove si studieranno i concetti, le teorie, i namespaces ed il funzionamento fondamentale della OOP.
- una parte pratica, finale, dove affronteremo lo sviluppo di un'applicazione completa in PHP tramite l'OOP.
Nella prossima lezione continueremo a parlare delle basi della OOP, evidenziando ulteriormente le differenze tra questo paradigma e quello procedurale.