📢 Nuovo Corso Laravel API disponibile!

Classi Astratte in PHP

Le classi astratte sono una caratteristica della programmazione orientata agli oggetti (OOP) in PHP che consentono di definire classi parziali con metodi incompleti. Questi metodi astratti devono essere implementati dalle classi figlie che ereditano dalla classe astratta. Le classi astratte non possono essere istanziate direttamente; servono come modelli per altre classi.

Definizione di una Classe Astratta

Per definire una classe astratta in PHP, si utilizza la parola chiave abstract prima della dichiarazione della classe. Ecco un esempio:

abstract class Forma {
abstract public function calcolaArea();
}

In questo esempio, abbiamo definito una classe astratta Forma con un metodo astratto calcolaArea(). La classe astratta può contenere anche metodi con implementazioni complete, ma deve avere almeno un metodo astratto.

Implementazione dei Metodi Astratti

Le classi figlie che ereditano da una classe astratta devono implementare tutti i metodi astratti definiti nella classe madre. Ad esempio:

class Rettangolo extends Forma {
private $base;
private $altezza;
public function __construct($base, $altezza) {
$this->base = $base;
$this->altezza = $altezza;
}
public function calcolaArea() {
return $this->base * $this->altezza;
}
}

Nell’esempio sopra, la classe Rettangolo eredita dalla classe astratta Forma e implementa il metodo astratto calcolaArea(). Questo permette di calcolare l’area di un rettangolo specifico.

Differenze tra Classi Astratte e Interfacce

È importante notare le differenze tra classi astratte e interfacce in PHP:

Classi Astratte:

  1. Possono contenere metodi astratti e metodi con implementazioni complete.
  2. Possono contenere proprietà, sia astratte che con implementazioni complete.
  3. Le classi astratte possono ereditare da altre classi (astratte o non) utilizzando extends.
  4. Una classe può ereditare da una sola classe astratta.

Interfacce:

  1. Contengono solo metodi astratti (senza implementazioni).
  2. Non possono contenere proprietà.
  3. Una classe può implementare più interfacce contemporaneamente utilizzando implements.
  4. Le interfacce non possono essere istanziate direttamente.

Le classi astratte forniscono una maggiore flessibilità in quanto possono contenere implementazioni complete e proprietà, mentre le interfacce sono utilizzate per definire un contratto che le classi devono rispettare.

Conclusioni

Le classi astratte in PHP sono una potente tecnica di programmazione orientata agli oggetti che consentono di definire classi con metodi astratti e proprietà, fornendo una struttura di base comune per le classi figlie. Questo promuove l’omogeneità e la coerenza nel codice e può contribuire a evitare la duplicazione del codice. Le classi astratte sono diverse dalle interfacce e sono una parte fondamentale dell’OOP in PHP.