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;

 

posted @ 2019-10-06 11:24  钧一  阅读(243)  评论(0)    收藏  举报