domenica 2 novembre 2025

Corso di PHP: 8 – Programmazione a Oggetti (OOP) in PHP

8 – Programmazione a Oggetti (OOP) in PHP

Introduzione

La programmazione a oggetti (OOP) è un paradigma che consente di organizzare il codice in modo più modulare, riutilizzabile e leggibile. PHP supporta pienamente l’OOP a partire dalla versione 5, rendendolo uno strumento potente non solo per siti web semplici, ma anche per applicazioni complesse.

Concetti chiave:

  • Classe → un modello, una struttura che definisce proprietà e metodi.

  • Oggetto → un’istanza concreta di una classe.

  • Proprietà → variabili appartenenti alla classe.

  • Metodi → funzioni che appartengono alla classe.


Classi e Oggetti

Una classe può essere vista come il progetto di un edificio, mentre l’oggetto è l’edificio costruito secondo quel progetto.

  • Dichiarare una classe significa definire il comportamento e le caratteristiche.

  • Creare un oggetto significa avere una copia concreta che può essere utilizzata.

Esempio concettuale:

  • Classe: “Automobile” (ha proprietà come colore, marca, modello; e metodi come accendi(), frena()).

  • Oggetto: una Fiat Panda rossa (istanza reale della classe Automobile).


Proprietà e Metodi

  • Proprietà: rappresentano lo stato dell’oggetto.

    • Esempio: $colore, $marca, $prezzo.

  • Metodi: rappresentano le azioni che l’oggetto può compiere.

    • Esempio: accendi(), frena(), mostraDettagli().

Visibilità delle proprietà e metodi

  • public → accessibile ovunque.

  • private → accessibile solo all’interno della classe.

  • protected → accessibile dalla classe e dalle sue sottoclassi.


Costruttori e Distruttori

Quando si crea un oggetto, spesso è utile inizializzare automaticamente alcune proprietà: questo è il compito del costruttore (__construct).

  • Costruttore: metodo speciale che viene chiamato automaticamente alla creazione dell’oggetto.

  • Distruttore: metodo (__destruct) che viene chiamato quando un oggetto non è più utilizzato, ad esempio per liberare risorse.

Esempio concettuale:

  • Un oggetto Database può aprire la connessione al momento della creazione (costruttore) e chiuderla quando non serve più (distruttore).


Ereditarietà

Uno dei principi fondamentali dell’OOP è il riuso del codice.
L’ereditarietà consente a una classe di derivare da un’altra, ereditando proprietà e metodi.

  • Classe base: contiene attributi e comportamenti comuni.

  • Classe derivata: aggiunge o modifica comportamenti specifici.

Esempio concettuale:

  • Classe Utente → ha nome, email, metodo login().

  • Classe Admin (eredita da Utente) → ha in più i permessi di gestione, metodo cancellaUtente().


Esercizio: Simulazione di gestione utenti con classi

Obiettivo

Creare un sistema semplificato per gestire utenti e amministratori con PHP OOP.

Passaggi logici

  1. Definire la classe Utente con proprietà (nome, email) e metodo login().

  2. Aggiungere un costruttore per inizializzare i dati dell’utente.

  3. Definire la classe Admin che eredita da Utente e aggiunge il metodo cancellaUtente().

  4. Creare più oggetti (utenti e admin) e simulare alcune operazioni.

Estensione

  • Inserire la proprietà password con metodo verificaPassword().

  • Aggiungere un metodo che restituisce una stringa con i dettagli dell’utente.

  • Creare una piccola lista utenti e ciclare per mostrare i loro dati.


Conclusione

La programmazione a oggetti in PHP consente di organizzare il codice in modo elegante e scalabile. Con le classi si definisce la struttura, con gli oggetti si creano istanze reali. I costruttori e i distruttori gestiscono l’inizio e la fine del ciclo di vita, mentre l’ereditarietà permette di riutilizzare il codice e specializzarlo. L’esercizio proposto simula un caso reale, ossia la gestione degli utenti, che rappresenta la base di molti sistemi web (registrazioni, login, aree riservate).


Nessun commento:

Posta un commento

Corso Fondamenti di Informatica e Reti: 6 Reti di computer e Internet

Reti di computer e Internet Introduzione Prova a pensare alla vita quotidiana senza reti informatiche: niente messaggi WhatsApp, niente m...