[PHP] laravel 中__callStatic的使用

2021-08-05 10:50:45 浏览数 (1)

当使用laravel的日志类记录信息的时候

Log::info("xxxx")

发现Log类里并没有定义info 静态方法,但是仍然可以调通

原因就是__callStatic魔术方法,当静态方法不存在的时候,会调用这个魔术方法

简单的测试用例

代码语言:javascript复制
<?php

/**
 * Class Log
 * @method static void info()
 * @see Test
 */
class Log{
    public static function __callStatic($method, $args){
        $test=new Test();
        $test->$method($args);
    }
}

class Test{
    public  function info($args){
        var_dump($args);
    }
}


Log::info("hello","world");

0 人点赞