魔术方法之__call与__callStatic方法

Posted qq254980080

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了魔术方法之__call与__callStatic方法相关的知识,希望对你有一定的参考价值。

<?php
class human{
private function t(){
}


/**
     * 魔术方法__call
     *
     * @param string $method 获得方法名
     * @param string $arg 获得方法的参数集合
     */
    public function __call($method, $params){
        echo ‘你想调用我不存在的方法‘, $method, ‘方法‘;
        echo ‘还传了一个参数‘;
        print_r($params);
    }

    //魔术方法__callStatic
    public static function __callStatic($method, $params){
        echo ‘你想调用我不存在的‘, $method, ‘静态方法‘;
        echo ‘还传了一个参数‘;
        print_r($params),‘‘;
    }
}

$li=new human();
$li->say(1, 2, 3);

/*
__call是调用不可见(不存在或无权限)的方法时,自动调用
$li->say(1, 2, 3);
-----没有say()方法---->
 __call(‘say‘, array(1, 2, 3))运行
*/

human::cry(‘痛哭‘, ‘鬼哭‘, ‘号哭‘);

/*
__callStatic 是调用不可见的静态方法时,自动调用.
Human::cry(‘a‘, ‘b‘, ‘c‘);
----没有cry方法---> 
Human::__callStatic(‘cry‘, array(‘a‘, ‘b‘, ‘c‘));
*/

?>

  



以上是关于魔术方法之__call与__callStatic方法的主要内容,如果未能解决你的问题,请参考以下文章

PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep

PHP中__call()方法与重载解析

PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep

面向对象之魔术方法

php魔术方法

魔术方法