PHP魔术方法的使用

1、__get()   和  __set();

2、__call()   和  __callStatic();  

3、__toString();

4、__invoke();

 

1、__get()   和  __set();

一个php类文件为 object.php:

Class Object {

  private $array = array();

  function __set($key , $value){

    var_dump(__METHOOD__);

    $this->array[$key] = $value;

  }

  function __get($key){

    var_dump(__METHOOD__);

    return $this->array[$key];

  }

  function __call($func,$param){

    var_dump($func,$param);

    return 'magic function';

  }

  static function __callStatic(){

    var_dump($func,$param);

    return 'magic static function';

  } 

}

 

当我们给一个没有的属性赋值时会自动调用__set();

输出一个没有的属性的时候会自动调用__get();

测试代码如下:

$obj = new Object();

$obj->title = 'zhangshan';

echo $obj->title;

会得到以下结果:

2、__call()   和  __callStatic();  

当我们访问一个不存的方法时会自动调用__call();

echo $obj->test('Hello World',123);

会得到以下结果:

__callStatic()跟__call()大体相同只不过是针对static声明的方法

echo $obj::test('Hello World',123);

会得到以下结果:

 

posted on 2016-03-21 23:12  BGGANF  阅读(77)  评论(0编辑  收藏  举报