php中的魔术方法总结

//声明一个类MagicTest

class MagicTest{

    protected $arr = new array();

//__set()和__get()

    public function __set($key,$value){

         $arr[$key] = $value;   

    }

    public function __get($key){

         return this->$arr[key];

    }

 

//__call()和__callStatic()

    public function __call($name, $arguments){

        echo "calling ".$name."with parameters: ".implode(‘,‘,$arguments);

    }

    public static function __callStatic($name,$arguments){

         echo "calling static  function: ".$name."with parameters: ".implode(‘,‘,$arguments);

    }

 

//__tostring()和__invoke()

    public function __tostring(){

    }

    public function __invoke($name){  

    }

}

$obj = new MagicTest();

 

$obj->val = test;//__set($key,$value)被调用

echo $obj->val;//__get()被调用

 

$obj->runtest(param1,param2);//__call($name,$arguments)被调用

MagicTest::runtest(param1,param2,param3); //__callStatic($name,$arguments)被调用

 

echo $obj; //tostring()被调用

$obj(param);    //invoke($name)被调用

对象属性的操作:

__set();

__get();

对象方法的造作

__call();

__callStatic();

对对象本身的操作

__tostring()

__invoke()

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。