laravel下trait的使用代码实例详解
发布:smiling 来源: PHP粉丝网 添加日期:2022-04-18 10:51:43 浏览: 评论:0
这篇文章主要介绍了laravel下trait的使用代码实例详解,使用trait可以提高代码的复用性,有感兴趣的同学可以学习下。
前言
今天在整理laravel的练习项目时,发现自己的代码结构中有很多重复的代码。于是搜索了一下laravel框架的代码复用机制。知道了Trait的存在,于是学习使用了一下。
关于Trait的理解
Trait是PHP5.4引入的新概念,定义方式和class的定义方式类似。但是并不具备class的完整性。Trait看上去更像是一个class的一部分。它使不相关的两个class能够具有类似的行为。
Trait的简单使用
新建一个Trait
本人由于数据库操作上使用了eloquent模型,在多表查询时需要指定表格关系。在多个表中都使用了hasmany()关联到了主表,于是便把这一段代码块单独提出来并放入了名为HasInvoices的Trait中,文件目录在App\Traits下。注意Trait名与文件名应该相同。
Trait的引入
Trait的引入十分简单,在需要代码块的class中使用use Trait名就行。
记得头部要用use引入Trait。
关于Trait的用法
在上面所述的用法中,很显然用到的是完全相同的代码块,对于类似而不完全相同的的代码块复用,可以通过判断“不同点”来产生不同的结果,假设初始代码如下,人类A,动物类B,机器人类C。都具有付出成本,执行行为的能力。但由于彼此之间不具备继承关系,所以不适合使用继承。
- <?php
- class A{
- public $action = "逛街";
- public $money = 200;
- public function action(){
- echo "花了".$this->money.$this->action."\n";
- }
- }
- class B{
- public $action = "吃骨头";
- public $time = 2;
- public function action(){
- echo "花了".$this->time."分钟".$this->action."\n";
- }
- }
- class C{
- public $action = "跳舞";
- public $time = 30;
- public function action(){
- echo "花了".$this->time."分钟".$this->action."\n";
- }
- }
- $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."\n";
- }
- }
- 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();
运行结果
Tags: laravel trait
- 上一篇:清除laravel缓存命令代码实例
- 下一篇:最后一页
相关文章
- ·Laravel 5.6中的CURD操作(代码示例详解)(2020-01-15)
- ·如何在laravel 5中创建用于XSS防御的中间件? (2020-01-16)
- ·关于Laravel重定向的七种方法详解(2020-01-26)
- ·如何在laravel 5中使用DB事务?(2020-01-31)
- ·Laravel中如何给图片加水印?(2020-04-05)
- ·Laravel框架数据库CURD操作、连贯操作总结(2021-04-10)
- ·Laravel框架路由配置总结、设置技巧大全(2021-04-10)
- ·Laravel框架中扩展函数、扩展自定义类的方法(2021-04-10)
- ·跟我学Laravel之快速入门(2021-04-16)
- ·跟我学Laravel之安装Laravel(2021-04-16)
- ·跟我学Laravel之配置Laravel(2021-04-16)
- ·跟我学Laravel之请求(Request)的生命周期(2021-04-16)
- ·跟我学Laravel之路由(2021-04-16)
- ·跟我学Laravel之请求与输入(2021-04-17)
- ·跟我学Laravel之视图 & Response(2021-04-17)
- ·laravel安装和配置教程(2021-04-19)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)