Classi anonime - OOP in PHP

Indice
Cosa sono le classi anonime in PHP
Le classi anonime sono classi senza un nome specifico e vengono definite e istanziate direttamente all'interno di una funzione o di un'espressione.
Le classi anonime vengono utilizzate principalmente per creare oggetti temporanei senza dover definire una classe separata, ma anche per estendere le classi esistenti o implementare interfacce.
Sintassi di una classe anonima
$instance = new class {
// corpo della classe
};
Esempio utilizzando una classe anonima
<?php
/* Una classe anonima è semplicemente una classe che non ha un nome
Le classi anonime sono spesso utilizzate in contesti dove c'è bisogno di creare
un oggetto temporaneo oppure quando abbiamo bisogno di UN SINGOLO oggetto in una
parte dell'applicazione.
Le classi anonime possono essere usate per estendere altre classi o
anche per implementare interfacce.
*/
// Un esempio di classe anonima che richiede valori in input
$oggetto = new class('Valore dato in input') {
public function __construct(public string $valore){
echo $valore;
}
};
var_dump($oggetto);
// Un esempio di classe anonima che estende una classe
class Utente{
public string $nome;
public int $spesa;
public function __construct(string $nome, int $spesa){
$this->nome = $nome;
}
public function riepilogo() {
return new class($this) extends Utente{
public function __construct(public Utente $spesaIstanza){
}
public function spesaTotale(){
echo $this->spesaIstanza->nome . " ha speso " . $this->spesaIstanza->spesa . " fiorini";
}
};
}
}
$obj1 = new Utente("Donato");
$obj1->riepilogo()->spesaTotale();