PHP5 __get __set重载 运行过程分析一例
时间:2007-02-10 来源:lib
?php
class Setter{
public $n;
private $x = array();
private function __get($nm) {
if (isset($this->x[$nm])) { //9 18
$r = $this->x[$nm]; //10
print "Returning: $r\n"; //11
return $r; //12
} else {
echo "Nothing!\n"; //19
}
} //20
private function __set($nm, $val){
echo "Setting [$nm] to $val\n"; //4 13 21
if($this->x[$nm] = $val){ //5 14 22
echo "OK!\n"; //6 15 23
} else {
echo "Not OK!\n";
}
} //7 16 24
}
$foo = new Setter(); //1
$foo->n = 1; //2
$foo->a = 100; //3
$foo->a++; //8
$foo->z++; //17
print_r($foo); //25
?>
各输出步骤:
5: Setting [a] to 100
7:
8: Returning: 100
14: Setting [a] to 101
16:
20:
22: Setting [z] to 1
24:
26:
Setter Object
(
[n] => 1
[x:private] => Array
(
[a] => 101
[z] => 1
)
)
相关阅读 更多 +
排行榜 更多 +