__get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用,因为我们也可以把这个方法做成私有的方法,是在直接获取私有属性的时候对象自动调用的。因为私有属性已经被封装上了,是不能直接获取值的,但是如果你在类里面加上了这个方法,在使用“echo $p1->name”这样的语句直接获取值的时候就会自动调用__get($name)方法,将属性name传给参数$name,通过这个方法的内部执行,返回我们传入的私有属性的值。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。
当获取的值不存在时候,同样会调用__get方法获取。
class Employee{
public $position ='manager';
protected $age = 38;
public function __get($name){
switch ($name){
case 'age':
return $this->age-13;;
case 'salary':
return 'can not tell you';
}
}
}
$employee = new Employee;
echo $employee->position; //输出manage
echo $employee->age; //输出25
echo $employee->salary; //输出can not tell you