PHP提供了很多魔术方法,记录一下其中比较重要的几个
1.__get和__set
在对象调用不存在的属性时会去自动调用__get方法
在对象赋值不存在的属性或者权限不够的属性时会自动调用__set方法
2.__call和__callStatic
在对象调用不存在的或者权限不够的方法时会调用此类方法
3.__toString
在将对象作为字符串输出时会调用(例如echo $obj)
4.__invoke
在将对象作为函数输出时会调用(例如$obj())
魔术方法的意义:
在使用魔术方法的时候会觉得非常的方便和快捷,但是需要明白它们本质上还是为了更好的支持面向对象才出现的,例如PHP的面向对象天然不支持重载,但是利用魔术方法就可以实现类似重载的功能,如下:
class b
{
public function __call($name, $args)
{
$res = 0;
if($name=='test'){
$len = count($args);
switch ($len){
case 2:
$res = $args[0]+$args[1];
break;
case 3:
$res = $args[0]*$args[1]*$args[2];
}
}
return $res;
}
}
网友评论