Ciao,
stò studiando questa guida: http://php.html.it/guide/lezione/424...seconda-parte/
mi trovo in difficoltà con il seguente listato:
codice:
<?php
class MyClass{
// PROPRIETÀ:
public $a;
public $b;
/* METODO MAGICO __set_state(): viene azionato quando si esporta un oggetto
* tramita la funzione var_export ed accetta un array che avrà le coppie
* key/value impostate ai nomi/valori delle proprietà esportate */
public static function __set_state($arr){
$obj = new MyClass(); // Crea un nuovo oggetto istanza di MyClass
$obj->a = $arr['a'];
$obj->b = $arr['b'];
return $obj; // Ritorna il riferimento al nuovo oggetto
}
}
$obj1 = new MyClass(); // Crea un nuovo oggetto istanza di MyClass
$obj1->a = 10; // Modifica la proprietà a
$obj1->b = 20; // Modifica la proprietà b
eval('$obj2 = ' . var_export($obj1, true) . ';');
?>
Quando lo vado a fari girare non mi si vede nulla...e non capisco neanche bene cosa dovrebbe fare...
Praticamente...da quello che ho capito il metodo magico __set_state() viene richiamato automaticamente quando si esporta un oggetto in un altro oggetto con la funzione var_export()
Praticamente che fà? Prende in input un array (che non ho ben capito cosa contiene)...crea un nuovo oggetti e che significano esattamente queste due assegnazioni?
codice:
$obj->a = $arr['a'];
$obj->b = $arr['b'];
Cosa significa inoltre l'ultima operazione fatta fuori dalla classe? eval('$obj2 = ' . var_export($obj1, true) . ';');
Questo esempio non mi pare chiarissimo...
Grazie
Andrea