搜尋

首頁  >  問答  >  主體

laravel - php 靜態呼叫非靜態方法是如何做到的?

larave 專案中靜態呼叫

#facade

Admin類別中的title方法是非靜態的

這個是如何實現的?

黄舟黄舟2697 天前1006

全部回覆(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
  • 取消回覆