5.10.11 Surcharge
5.10 Les classes et les objets (PHP 5)
5 Référence du langage
Manuel PHP
->Surcharge de membre . Surcharge de méthode
|
5.10.11.1 Surcharge de membre
void
__set (
string
name
,
mixed
value
)
mixed
__get (
string
name
)
bool
__isset (
string
name
)
void
__unset (
string
name
)
Les membres d'une classe peuvent être surchargés afin d'exécuter un code
spécial contenu dans vos méthodes
__set
et
__get
.
Le paramètre
$name
est le nom de la variable
qui doit être définie ou recherchée.
Le paramètre
$valeur
de la méthode
__set
spécifie la nouvelle valeur à donner à
la variable
$name
.
| Exemple de surcharge avec __get, __set, __isset et __unset |
<?php class Setter { public $n; private $x = array("a" => 1, "b" => 2, "c" => 3);
private function __get($nm) { echo "Récupération de [$nm]\n";
if (isset($this->x[$nm])) { $r = $this->x[$nm]; echo "Retour : $r\n"; return $r; } else { echo "Rien!\n"; } }
private function __set($nm, $val) { echo "Définition de [$nm] à $val\n";
if (isset($this->x[$nm])) { $this->x[$nm] = $val; echo "OK!\n"; } else { echo "Pas OK!\n"; } }
private function __isset($nm) { echo "Vérifie si $nm est défini\n";
return isset($this->x[$nm]); }
private function __unset($nm) { echo "Libération de $nm\n";
unset($this->x[$nm]); } }
$foo = new Setter(); $foo->n = 1; $foo->a = 100; $foo->a++; $foo->z++; var_dump($foo);
var_dump(isset($foo->a)); //true unset($foo->a); var_dump(isset($foo->a)); //false
// ceci ne passera pas via la méthode __isset() // parce que 'n' est une propriété publique var_dump(isset($foo->n));
var_dump($foo); ?>
|
|