作者:ruigh | 来源:互联网 | 2023-09-07 14:19
php框架|Laraveltrait,Facadephp框架-Laravel下面由Laravel教学栏目给大家介绍如何利用PHPtrait实现简易Facade,希望对大家有所帮助!
php框架|Laravel
trait,Facade
php框架-Laravel
下面由
Laravel教学栏目给大家介绍如何利用PHP trait实现简易Facade,希望对大家有所帮助!
blue引擎源码,ubuntu没有应用商店,python爬虫医院信息,php中完成对二叉树节点的求和,seo主管 表格lzw
android 位置分享源码,vscode运行c 代码,jetty部署ubuntu,启动tomcat设置参数,脊针爬虫和孢子爬虫动图,php正则贪婪模式,宁波seo网络推广品牌企业,html商品展示网站源码,织梦 教育模板lzw
简述安卓简单程序源码,vscode区域边框,ubuntu20无法设置网络,tomcat 包冲突,sqlite怎么搜索中文,jquery切图插件,大屏前端框架技术,js点击界面按钮爬虫,linux php服务器,深圳seo厂商,网站源码 破解,韩国的网页模板下载,joomla 2.5 安装模板,winform 程序更新demolzw
Facade
可以有效帮我实现方法的静态化。
Laravel
大部分的扩展包都使用了
Facade
。【推荐:laravel视频教学】
下面的简易
Facade
主要是利用 PHP 的特性
trait
,魔术方法
__callStatic
,反射类
ReflectionClass
。
使用场景
后台系统大部分都会有类似这样的操作:
这样似乎没有什么问题,但是还会存在下面这样的:
$article = Article::find($id);if (!$article) { throw new \Expection("资源不存在");}$article->delete();
这样写法十分不优雅。
上代码
1、首先我们应该要有一个 Service
2、新建一个 Trait
trait 为了多继承而存在的,可以去 PHP官网 看文档。
newInstanceArgs(); // 调用该不存在的方法 $model = call_user_func_array([$instance, $method], [$arg]); // 如果存在复杂操作交给 callback return isset($args[2]) ? $args[2]($model) : self::callback($model, $method); }}
首先我们关注 __callStatic
这个魔术方法。 当调用不存在的静态方法时会触发该方法。和他相似的魔术方法是 __call
。这是使用 __callStatic
是为了达到 Facade
的效果。
__callStatic
有两个回调参数 $method
是 被调用的且不存在的方法
,$args
是 $method
方法中所传递的参数(数组形式)。
这样一个简易的 trait
就完成了。
使用
我们新建一个 command
$ php artisan make:command TestCommand
写入下面的内容
load('author'); }); }}
其中的 Article
模型需要自己去创建。
接下来就可以看看效果了:
$ php artisan test:test
结语
这样我们就抛弃了使用 abstract
抽象类,来达到了跟 Facade
一样的效果。同时也做到了代码复用。
这样使用程序会多走很多步,但是跟优雅比起来,性能什么的都无所谓了。
表达不是很清楚,需要自己深入体会了。