<?php
class Person
{
function __get($property)
{
$method = "get{$property}";
if( method_exists($this , $method) )
{
return $this->$method(); //这个看不懂啊 谁详细说明一下啊
}
} function getName()
{
return 'Bob';
} function getAge()
{
return 44;
}
}$p = new Person();
echo $p->name;?>
class Person
{
function __get($property)
{
$method = "get{$property}";
if( method_exists($this , $method) )
{
return $this->$method(); //这个看不懂啊 谁详细说明一下啊
}
} function getName()
{
return 'Bob';
} function getAge()
{
return 44;
}
}$p = new Person();
echo $p->name;?>
{
return $this->$method(); //这个看不懂啊 谁详细说明一下啊
}
整段语句的意思应该是,首先判断本类中是否有$method这个方法,如果有,调用这个方法。
上面的例子的意思是,先实例化Person类,然后调用属性name,发现属性name不存在,则__get()方法被调用,实现用__get()来获取属性并构造新的字符串,把"get"放在属性前,然后将组合成的类方法字符串传递给method_exists()函数,检查方法是否确实存在,如果存在,就调用它并把它的返回值传递给客户,所以,如果客户请求一个$name属性时:
$p = new Person();
echo $p->name;getName()方法被后台调用,输出
Bob