搜索

首页  >  问答  >  正文

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

larave 项目中静态调用

facade

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

这个是如何实现的?

黄舟黄舟2697 天前1004

全部回复(1)我来回复

  • 学习ing

    学习ing2017-07-05 10:04:01

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

    IlluminateSupportFacadesFacade 代码最下方

    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 比较重要的特性之一,可以详细了解下它的实现。

    回复
    0
  • 取消回复