Classi anonime - OOP in PHP

Classi anonime - OOP in PHP

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();

Scritto da Donato Pirolo

Ciao, sono Donato, frontend developer con una smisurata passione per la SEO. Creo strumenti ad hoc per aiutare aziende e professionisti ad essere cercati sul web e trovare clienti.

Potrebbero interessarti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyright © 2023
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram