看代码:
<?php
class stu{
private $a;
private $b = 0;
public $c;
public $d = 0;
public function __get($name) {
return 123;
}
public function __set($name, $value) {
echo "This is set function";
}
}
$s = new stu();
var_dump($s->a); //output: 123
var_dump($s->b); //output: 123
var_dump($s->c); //output: null
var_dump($s->d); //output: 0
var_dump($s->e); //output: 123
$s->a = 3; //output: This is set function
$s->c = 3; //no output
$s->f = 3; //output: This is set function
?>
当你取值时,如果类中不存在这个属性或者是private的,对这个属性取值时,$object->e,就会自动调用__get()方法.当对这个属性赋值时就调用__set()方法。