php魔术方法及其意义

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;

    }

}

你可能感兴趣的:(php魔术方法及其意义)