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

Le costanti di classe e altre funzionalità

Le costanti, le richieste a proprietà e metodi e la funzione autoload
Le costanti, le richieste a proprietà e metodi e la funzione autoload
Link copiato negli appunti

Un'altra aggiunta interessante è che ora è possibile definire costanti di classe, accedendovi utilizzando l'operatore usato per le proprietà o i metodi statici:

<?php

class Prova
{
    const MIA_COSTANTE = 'valore';
}

echo Prova::MIA_COSTANTE;

?>

Un'altra funzionalità molto interessante, che prima era utilizzabile solamente attraverso l'estensione overload ma ora è built-in, è la possibilità di definire dei metodi particolari per catturare tutte le richieste in lettura/scrittura alle proprietà e le chiamate ai metodi, nel caso non fossero trovati nell'albero dei simboli di una classe.

Vediamo un semplice esempio:

<?php

class Prova
{
    public $prova;
    private $data;
    
    public function __construct()
    {
        $this->data = array();
    }
   
    public function __set($name, $value)
    {
        echo Scritta la proprietà .$name.<br/>;
        $this->data[$name] = $value;
    }

    public function __get($name)
    {
        echo Richiesta la proprietà .$name.<br/>;
        return $this->data[$name];
    }
   
    public function test()
    {
        echo test method;
    }
   
    public function __call($name, $args)
    {
        echo Richiamato il metodo .$name. con .count($args). argomenti;
    }
}

$prova = new Prova;
$prova->prova = 10;
echo $prova->prova;
$prova->ciao = ciao;
echo $prova->ciao;
$prova->metodoInesistente(1, 2, 3, 4, array());

?>

Prima di terminare questa breve trattazione della programmazione ad oggetti, vorrei parlare di un aggiunta fatta a PHP che permette di caricare automaticamente i file contenenti le definizioni delle classi nel momento in cui non vengano trovate in fase di esecuzione. PHP richiama automaticamente la funzione __autoload quando non trova una classe:

<?php

function __autoload($classname)
{
    echo Classe richiesta: .$classname;
    require_once $classname..php;
}

$prova = new Prova();

?>

Ovviamente utilizzare direttamente il nome della classe non è un sistema corretto. Ricordiamoci sempre di controllare che il path risultante o richiesto sia realmente accessibile e sia corretta la sua richiesta.

Ti consigliamo anche