Ho trovato questo script sulla rete e...
Qualcuno sarebbe così gentile da spiegarmi come funzioni ciò :master:Codice PHP:
<?php
class int {
var $int;
var $var;
function __construct()
{
echo "Int::__construct()\n";
}
function __get($var)
{
echo "restituisco il valore della variabile $var: ".$this->var[$var]."\n";
return $this->var[$var];
}
function __set($var,$val)
{
echo "setto il valore della variabile $var: $val\n";
$this->var[$var]=$val;
}
}
$var = new int;
$var->i = 5;
echo "i = ".$var->i."\n";
?>
--OUTPUT--
Int::__construct()
setto il valore della variabile i: 5
restituisco il valore della variabile i: 5
i = 5
Cioè non capendo il funzionamento secondo me non sta in cielo ne in terra :/
Giustamente con __construct() viene richiamata la prima riga :
- Int::__construct()
Successivamente viene richiamata __set e non __get... perchè ? è la proprieta __set che fa in modo che venga richiamata per prima anche se si trova per ultima ?
Oppure viene richiamata grazie alla riga :
$var->i = 5;
( cosi viene spiegato nella guida )
Se fosse richiamata dalla riga $var->i = 5; mi spiegate come è possibile ciò ?
Ora ragiondoci un pò ho fatto questa supposizione ( ma credo sia sbagliata ):
Dato che la funzione __set ha due valori ( variabile e valore ) richiamando la classe e assegnando alla variabile $var il valore di 5, la variabile è per sintassi il primo attributo della funzione e il valore il secondo attributo...
Poi mi chiedo anche da dove spunti quella variabile "i" :/ Son abbastanza confuso...
E infine com'è possibile che tramite :
echo "i = ".$var->i."\n";
si richiami __get ? Cioè secondo me l'unica possibilità è che per regola __set venga richiamata per prima e __get dopo.
Ultima curiosità... è casuale che la classe sia inizializzata con la variabile $var ? O c'è una relazione con la variabile $var che sta all'interno della classe ?