php 静态调用非静态方法是如何做到的?

larave 项目中静态调用

facade

Admin类中的title方法是非静态的

这个是如何实现的?

归根结底是通过 魔术方法 __callStatic 实现的

Illuminate\Support\Facades\Facade 代码最下方

https://github.com/illuminate

 /**
     * Handle dynamic, static calls to the object.
     *
     * @param  string  $method
     * @param  array   $args
     * @return mixed
     *
     * @throws \RuntimeException
     */
    public static function __callStatic($method, $args)
    {
        $instance = static::getFacadeRoot();
        if (! $instance) {
            throw new RuntimeException('A facade root has not been set.');
        }
        return $instance->$method(...$args);
    }

关于 FacadeLavavel 比较重要的特性之一,可以详细了解下它的实现。

  • 求一段正则,分析thinkphp日志
  • laravel提示Use of undefined constant MCRYPT_RIJNDAEL_128 ?
  • TYPECHO数据库存在信息,而前台不显示
  • 如何更好的学习一个框架
  • php中同时使用多个use导入命名空间时的问题
  • PHP curl 无法解析域名
  • 七牛 音频实时播放
  • PHP服务端用什么实现多进程?
  • mac下用homebrew安装npm后登陆info.php还是显示自带的php55的版本号?
  • Laravel route resource 能否使用另一个字段?
  • 如何理解C扩展框架?