Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Le classi astratte

Cosa si intende per interfacce e le classi astratte in PHP 5
Cosa si intende per interfacce e le classi astratte in PHP 5
Link copiato negli appunti

Oltre a questo, PHP ha ampliato notevolmente le sue potenzialità introducendo le interfacce e le classi astratte. Un'interfaccia è una classe speciale che definisce solamente la struttura che dovranno obbligatoriamente avere le classi che la implementano. Non può essere istanziata.

<?php

interface ProvaInterfaccia
{
    public function mustBeImplemented();
}

class Prova implements ProvaInterfaccia
{
    public function mustBeImplemented()
    {
        // implementazione
    }
}

?>

Se una classe non dovesse implementare tutti i metodi definiti nell'interfaccia, PHP restituirebbe un errore.

Le classi astratte invece sono un sistema che permette di definire classi parzialmente completate che lasciano l'implementazione di alcuni metodi alle sottoclassi. Una classe astratta deve essere definita utilizzando la parola chiave abstract; lo stesso vale per quei metodi astratti della classe. Vediamo un esempio:

<?php

abstract class ProvaAbs
{
    public function prova()
    {
        $this->abstractMethod();
    }
    
    abstract protected function  abstractMethod();
}

class Prova extends ProvaAbs
{
    protected function  abstractMethod()
    {
        // metodo richiamato da ProvaAbs::prova()
    }
}

?>

Grazie alle interfacce ed alle classi astratte, PHP ha rafforzato notevolmente il suo supporto ai tipi di dato, permettendo l'introduzione del type hinting per i tipi di dato complessi. Possiamo specificare il tipo di oggetto che ci aspettiamo per un parametro di un metodo/funzione demandando a PHP il compito di effettuare il controllo:

<?php

function prova(ProvaAbs $arg)
{
    $arg->prova();
}

?>

In questo modo possiamo assicurarci un'integrità delle chiamate che prima era quasi impossibile se non con particolari controlli effettuati a runtime.


Ti consigliamo anche