laravel下trait的使用代码实例详解

admin3年前PHP教程71

前言

今天在整理laravel的练习项目时,发现自己的代码结构中有很多重复的代码。于是搜索了一下laravel框架的代码复用机制。知道了Trait的存在,于是学习使用了一下。

关于Trait的理解

Trait是PHP5.4引入的新概念,定义方式和class的定义方式类似。但是并不具备class的完整性。Trait看上去更像是一个class的一部分。它使不相关的两个class能够具有类似的行为。

Trait的简单使用

新建一个Trait

本人由于数据库操作上使用了eloquent模型,在多表查询时需要指定表格关系。在多个表中都使用了hasmany()关联到了主表。于是便把这一段代码块单独提出来并放入了名为HasInvoices的Trait中,文件目录在AppTraits下。注意Trait名与文件名应该相同


Trait的引入

Trait的引入十分简单,在需要代码块的class中使用use Trait名就行。


记得头部要用use引入Trait。


关于Trait的用法

在上面所述的用法中,很显然用到的是完全相同的代码块。对于类似而不完全相同的的代码块复用,可以通过判断“不同点”来产生不同的结果。假设初始代码如下,人类A,动物类B,机器人类C。都具有付出成本,执行行为的能力。但由于彼此之间不具备继承关系,所以不适合使用继承。

<?phpclass A{ public $action = "逛街"; public $money = 200; public function action(){echo "花了".$this->money.$this->action.""; }}class B{ public $action = "吃骨头"; public $time = 2; public function action(){echo "花了".$this->time."分钟".$this->action.""; }}class C{ public $action = "跳舞"; public $time = 30; public function action(){echo "花了".$this->time."分钟".$this->action.""; }}$a = new A;$b = new B;$c = new C;echo $a->action();echo $b->action();echo $c->action();

运行结果


将action函数提出到Trait,修改后代码

trait D{ public function action(){echo "花了".(property_exists($this,"time")? $this->time."分钟":$this->money) .$this->action.""; }}class A{ use D; public $action = "逛街"; public $money = 200;}class B{ use D; public $action = "吃骨头"; public $time = 2;}class C{ use D; public $action = "跳舞"; public $time = 30;}$a = new A;$b = new B;$c = new C;echo $a->action();echo $b->action();echo $c->action();

运行结果


到此这篇关于laravel下trait的使用代码实例详解的文章就介绍到这了,更多相关laravel下trait的使用内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

租用国外多ip服务器有哪些优势国外多ip服务器如何选择合适的

租用国外多ip服务器的优势有:1、有利于搜索引擎收录,提高服务器网站内容的收录率;2、稳定性好,不会因为一个网站出现问题而受到影响;3、使用多IP部署网站更加易于维护;4、资源多,能保障网站不间断正常...

php memcached的实例用法详解

1、启动Memcached。2、使用ps命令查看一下运行状态。3、创建一个Memcached对象。4、通过add和get方法添加数据即可。记得一定要先启动Memcached哦!?1[root@loca...

gpu运算服务器有哪些?租用香港GPU服务器配置和报价?

当下是人工智能的时代,而这一行业对计算性能、能耗、延迟等功效的要求是极高的,而传统的服务器计算平台已经负载,在日益革新的人工智能领域,已经显得力不从心。所以,将目标放在gpu运算服务器上面,以发挥更大...

php之php.ini配置文件讲解案例

[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.in...

php慢查询日志和错误日志使用详解

前言作为一名程序员,比码代码还重要那么一点点的东西就是日志的分析和查询。下面列出常见日志及设置方法。php-fpm 慢日志php慢日志需要在php-fpm.conf设置,如果使用源码包安装默认请执行下...

泉州高防服务器租用都有哪些优点

租用泉州高防服务器有以下几个优点:提供更高的防御能力:高防服务器通常配备有专业的防御系统,可以有效地抵御各种攻击,例如DDoS攻击、CC攻击、SQL注入等等。保证网站的稳定性和可用性:高防服务器可以保...