Facade 封裝類 -- 解決視圖裡面長長的命名空間調用問題 spring命名空間 qq空間命名 全域命名空

來源:互聯網
上載者:User
有時候模版裡面定義需要寫很長的全路徑類名,此處提供一個 簡易的別名調用代碼來規避此問題,缺點就是IDE 代碼提示功能就沒有了 * // 初始化 * ZGFacade::setZGFacade('form', 'Aert_Form'); * ZGFacade::setZGFacade('esClient', '\Elasticsearch\Client'); *  * // 使用demo * $form = ZGFacade::newInstance('form', 'frm2', 'delete'); * dump($form); *  * echo ZGFacade::server('form', 'REQUEST_METHOD'); * echo ZGFacade::get('form', 'a'); *  * $dsn      = Config::get('esken.dsn'); * $esClient = ZGFacade::newInstance('esClient', $dsn); * dump($esClient); *  * @author vb2005xu@qq.com */final class ZGFacade{private static $map = ['form'=> 'Aert_Form'];public static function setZGFacade($alias, $class){self::$map[ $alias ] = $class;}private static function __facade__($facade, $method, $arguments=[]){if ( is_object($facade) ){// 調用 對象方法return call_user_func_array( [$facade, $method], $arguments );}else if (is_string($facade)){if ( empty(self::$map[$facade]) ){throw new Exception("未定義 'facade': {$facade} ");}// 調用 靜態方法if ( 'newInstance' == $method )    {    $class = new ReflectionClass( self::$map[$facade] );    return $class->newInstanceArgs( $arguments );    }$class = self::$map[$facade];return call_user_func_array( [$class, $method], $arguments );}throw new Exception("無效 'facade' 調用!");}public function __call($method, $arguments)     {    $facade = array_shift($arguments);    return self::__facade__($facade, $method, $arguments);    }    public static function __callStatic($method, $arguments)     {    $facade = array_shift($arguments);        return self::__facade__($facade, $method, $arguments);    }}

以上就介紹了Facade 封裝類 -- 解決視圖裡面長長的命名空間調用問題,包括了命名空間,acad方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.