PHP 魔术方法
魔术方法
1. 构造函数 __construct()
该函数最容易见到的地方就是登陆验证,因为该方法是最先执行的,如果验证不通过可跳转并带掉下面的程序,从而达到验证的效果
2.析构函数 __destruct()
如果说__construct()是最先执行的方法,那么__destruct()则是最后执行的方法,它与构造函数相反,他是在类被销毁或者程序执行完了之后执行的。
3.__call()
__call方法则跟上面的完全不一样,他是在执行php调用类里面某个不存在的方法的时候触发的,但是仅限动态调用时会触发
<?php class A{ //$b为你调用的方法,而$c则会把你传递过来的参数转换成数组保存起来 public function __call($b,$c){ echo $b; var_dump($c); } } $a=new A(); $a->hello(1,2,3); //结果如下 // hello // array(3) { // [0]=> // int(1) // [1]=> // int(2) // [2]=> // int(3) // }
4.__callStatic
该函数跟__call是一样的,不过唯一一处不一样的地方则是它只在静态调用中触发
5.__get()
__get()跟__call()其实差不多,唯一不一样的地方就是,__call()是在调用的方法不存在的时候触发,而__get则是在调用的变量不存在时触发
<?php class A{ //$x是调用的变量 public function __get($x){ var_dump($x); } } $a = new A; $d=$a->b;
6.__set()
__set()跟__get()的区别就是:__get()在调用不存在的方法时触发,而__set()则是在给不存在的变量赋值的时候触发
<?php class A{ //$x是调用的变量,$y是赋的值 public function __set($x,$y){ var_dump($x); var_dump($y); } } $a = new A; $a->b = 1;