今天小编给大家分享一下怎么用PHP特性trait实现简易Laravel Facade的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

沅江网站建设公司创新互联公司,沅江网站设计制作,有大型网站制作公司丰富经验。已为沅江上千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的沅江做网站的公司定做!
简述
Facade 可以有效帮我实现方法的静态化。Laravel 大部分的扩展包都使用了 Facade。
下面的简易 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以上就是“怎么用PHP特性trait实现简易Laravel Facade”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注创新互联行业资讯频道。
本文标题:怎么用PHP特性trait实现简易LaravelFacade
新闻来源:http://www.jxjierui.cn/article/goeosc.html


咨询
建站咨询
