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