__call()和__callStatic()实例详解

<?php
class Demo
{
    //第一个参数是方法名,第二个参数是方法参数,以数组形式传入
    public function __call($method,$args)
    {
        //遍历参数$args
        $var = '';
        foreach ($args as $value){
            $var .= $value.',';// .= 字符串的连接运算
        }
        return '方法是'.$method.'('.$var.')'.'不存在';
    }
    //当我们调用一个不存在的静态方法时,会自动调用 __callStatic()
    public static function __callStatic($method,$args)
    {
        //遍历参数$args
        $var = '';
        foreach ($args as $value){
            $var .= $value.',';// .= 字符串的连接运算
        }
        return '静态方法是'.$method.'('.$var.')'.'不存在';
    }

}
//当访问一个不存在的非静态方法时,自动调用类中的魔术方法:__call()
echo (new Demo)->hello('php','python');
echo '<hr>';
//当访问一个不存在的静态方法时,自动调用类中的魔术方法:__callStatic()
echo Demo::hello(10,20,30);

转自 https://www.cnblogs.com/php-cn/p/6827086.html

猜你喜欢

转载自www.cnblogs.com/brady-wang/p/13369489.html