Corsi on-line

Le Anonymous Classes di PHP 7

PHP 7 è per il momento in fase di Alpha 2, a brevissimo dovrebbe arrivare la prima beta di questo aggiornamento, una versione che già contiene quelle che dovrebbero essere le features addizionali della release definitiva; tra queste ultime, una delle novità più interessanti riguarda l’introduzione delle Anonymous Classes, grazie al supporto di queste ultime PHP permette ora di accedere a dei costrutti che precedentemente venivano offerti da linguaggi considerati più avanzati come Java.

PHP

Nel paradigma orientato agli oggetti una classe anonima è in pratica caratterizzata dal fatto che la dichiarazione e l’istanza della classe stessa avvengono nello medesimo momento, tale peculiarità rende non indispensabile l’assegnazione di un nome ad essa, ecco il perché della definizione “Anonymous Classes“; tali costrutti limitano la necessità di dover definire delle classi in via preventiva, come per esempio nel caso in cui queste ultime debbano essere impiegata a runtime una singola volta.

Per definire e contemporaneamente istanziare una classe anonima di potrà ricorrere alla seguente sintassi:

$obj = new class("Padre") {
    public function __construct($famiglia) {
        $this->famiglia = $famiglia;
    }
};

In questo caso particolare la parola chiave new determina immediatamente l’istanza dell’oggetto di classe, per cui si potrà passare all’introduzione del costruttore anche senza avere come riferimento un nome di classe; a questo punto ci si potrebbe chiede se una classe priva di nome possa prevedere un meccanismo gerarchico come quello dell’inheritance che ne estenda i metodi. La risposta è affermativa.

$obj = new class("Padre") {
    extends Genitori {
        public function __construct($famiglia) {
            $this->famiglia = $famiglia;
        }
    }
};

Il supporto delle classi anonime in PHP 7, come nel caso di una qualsiasi altra classe, si estende anche alle interfacce, cioè alle classi non istanziabili ma comunque implementabili.

interface Nonni {
    public function method();
}
$obj = new class("Padre")
extends Genitori implements Nonni {
    public function __construct($famiglia) {
        $this->famiglia = $famiglia;
    }
    public function method() {}
};

Dotate di funzionalità simili a quelle delle classi dotate di un nome, le Anonymous Classes rappresentano un’opportunità rilevante per incrementare il livello di produttività delle sessioni di sviluppo, in particolare quando si ha la necessità di implementare un’applicazione preesistente.

Post correlati
I più letti del mese
Tematiche