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

admin3年前PHP教程38

前言

今天在整理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的使用内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

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

相关文章

PHP 弱引用的相关总结

目录什么是弱引用WeakReference注意测试代码:之前的文章中,我们已经学习过引用和引用传值相关的知识。我们知道,PHP 中没有纯引用(指针),不管是对象,还是用引用符号 & 赋值的变量...

php计算汉明距离总和的实例讲解

两个整数的汉明距离指的是这两个数字的二进制数对应位不同的数量。计算一个数组中,任意两个数之间汉明距离的总和。实例输入: 4, 14, 2输出: 6解释:在二进制表示中,4表示为0100,14表示为11...

厦门高防服务器如何防攻击

厦门高防服务器如何防攻击?厦门高防服务器通过多种技术手段来防范攻击,包括以下几个方面:防火墙:高防服务器内置防火墙,可对流量进行分析、过滤和限制,对可能的攻击流量进行阻止和筛选,保护服务器和网站的安全...

thinkphp6使用mysql悲观锁解决商品超卖问题的实现

悲观锁介绍(百科):悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠...

东莞高防服务器租用应该怎么选择

东莞高防服务器租用应该怎么选择?选择东莞高防服务器租用时,以下几个因素需要考虑:防护能力:高防服务器主要是为了防止各种网络攻击,包括DDoS攻击、CC攻击、UDP攻击等等。因此,在选择时需要注意服务器...

详解各种PHP函数漏洞

目录1.MD5 compare漏洞2.ereg函数漏洞:00截断3.变量本身的key4.变量覆盖5.strcmp6.sha1 和 md5 函数7.is_numeric8.preg_match9.par...