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

admin3年前PHP教程97

前言

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

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

相关文章

GPU服务器如何正确选购?泉州GPU服务器购买需要注意哪些事项?

GPU服务器如何正确选购?选择GPU服务器时,首先要考虑业务需求,选择合适的GPU型号。在HPC高性能计算中,也需要根据精度进行选择。比如一些高性能计算要求双精度,这时如果用P40或P4就不合适,只能...

PHP常见算法合集代码实例

许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣,下面是一些常用的算法和实例,大家可以好好学习下一、文件夹遍历<?phpfunction allFile($path =...

PHP屏蔽错误的方法总结

1、@屏蔽法@在php中一个抑制错误的符号,即便是你开启了报错功能,只要在错误语句之前加上@符号,便可屏蔽了错误信息。使用@抑制错误之前,会出现一个警告错误。2、error_reporting屏蔽法在...

显卡服务器有什么用租用美国显卡服务器如何选择

显卡服务器实际上是配备独立显卡的物理服务器。用户可以通过远程桌面运行自己的程序和一些具有独立显卡需求的应用程序需求。为什么普通服务器没有显卡?由于许多服务器用于运行网站或作为应用程序的服务器,这些应用...

PHP二维码的生成与识别案例

二维码的分类线性堆叠式二维码矩阵式二维码二维码的优缺点优点信息容量大编码范围广容错能力强译码可靠性高可引入加密措施成本低,易制作缺点二维码技术成为手机病毒、钓鱼网站传播的新渠道信息泄密目前流行的三大国...

聊聊PHP中die()和sleep()函数的用法

在上一篇《聊聊PHP中删除字符串的逗号和尾部斜杠的方法》给大家介绍了PHP删除字符串中的逗号以及尾部斜杠的方法,感兴趣的朋友可以去学习了解一下~本文也将给大家通过示例来讲解标题所述“PHP...