• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Facade 包装类 — 解决视图里面长长的命名空间调用问题

php 搞代码 3年前 (2022-01-23) 16次浏览 已收录 0个评论

有时候模版里面定义需要写很长的全路径类名,此处提供一个 简易的别名调用代码来规避此问题,缺点就是IDE 代码提示功能就没有了

<?php/** * Facade 包装类 * * 优点: * 使用简单的方式来省掉视图里面长长的命名空间调用,诸如 YII 的模版 * 缺点: * 这么写在 IDE 中会失去代码自动提示的功能,对于 sublime 狗而言貌似不是缺点 * * 使用方法: * ZGFacade::{方法名}( {facade名称}, 参数1, 参数2,...参数n ) *  * <code> * // 初始化 * 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&<b>6本文来源gao@dai!ma.com搞$代^码!网7</b><pre>搞gaodaima代码

#39;); * $esClient = ZGFacade::newInstance('esClient', $dsn); * dump($esClient); * * @author [email protected] */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); }}


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Facade 包装类 — 解决视图里面长长的命名空间调用问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址