<?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;?>

解决方案 »

  1.   

    if( method_exists($this , $method) )
           {
                return $this->$method(); //这个看不懂啊 谁详细说明一下啊
            }
    整段语句的意思应该是,首先判断本类中是否有$method这个方法,如果有,调用这个方法。
      

  2.   

    __get($property) 访问未被定义的属性时被调用。
    上面的例子的意思是,先实例化Person类,然后调用属性name,发现属性name不存在,则__get()方法被调用,实现用__get()来获取属性并构造新的字符串,把"get"放在属性前,然后将组合成的类方法字符串传递给method_exists()函数,检查方法是否确实存在,如果存在,就调用它并把它的返回值传递给客户,所以,如果客户请求一个$name属性时:
    $p = new Person();
    echo $p->name;getName()方法被后台调用,输出
    Bob