PHP Laravel中的Trait使用方法


Posted in PHP onJanuary 20, 2019

Trait是一种在单继承语言(如PHP)中重用代码的机制。Trait旨在通过使开发人员能够在生活在不同类层次结构中的多个独立类中自由地重用方法集来减少单继承的某些限制。Traits和类组合的语义以降低复杂性的方式定义,并避免了与多重继承和Mixins相关的典型问题。

Trait类似于类,但仅用于以细粒度和一致的方式对功能进行分组。无法自行实例化Trait。它是对传统继承的补充,可以实现行为的横向组合; 也就是说,类成员的应用程序不需要继承。

什么是PHP Trait?

Trait仅仅是您希望包含在另一个类中的一组方法。与抽象类一样,Trait不能自己实例化。

Trait的一个例子可以是:

trait SharePost {

 

 public function share($item)

 {

  return 'share this post';

 }

 

}

然后你可以把这个trait 包含在其他类中,就像这样:

class Post {

 

 use SharePost;

 

}

 

class Comment {

 

 use SharePost;

 

}

现在,如果要从这些类中创建新对象,您会发现它们都有share()方法可用:

$post = new Post;

echo $post->share(''); 

 

$comment = new Comment;

echo $comment->share('');

trait 如何运作?

从上面的示例中可以看出,尽管没有定义该方法,但是对象Post和Comment对象都具有share()可用的方法。

Trait基本上只是一种在运行时“复制和粘贴”代码的方法。

这意味着Trait被复制到Post和Comment类中,因此当您实例化一个新实例时,share()方法代码将可用。

我经常检查我的代码以及如何构建我的代码,以便可以快速完成未来的功能添加,并且新项目可以轻松扩展以前的想法。

如何在laravel中使用trait ?

我在我的Http目录中创建了一个Trait目录,其中有一个名为的TraitBrandsTrait.php

use App\Http\Traits\BrandsTrait;

class YourController extends Controller {

  use BrandsTrait;

  public function addProduct() {

    $brands = $this->brandsAll();

  }

}

这是我的BrandsTrait.php

<?php

namespace App\Http\Traits;use App\Brand;

trait BrandsTrait {

  public function brandsAll() {

    // 从品牌表中获取所有品牌

    $brands = Brand::all();    return $brands;

  }

}
PHP 相关文章推荐
为PHP初学者的8点有效建议
Nov 20 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
浅谈php优化需要注意的地方
Nov 27 PHP
PHP中使用imagick生成PSD文件缩略图教程
Jan 26 PHP
学习PHP session的传递方式
Jun 15 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
php中static和const关键字用法分析
Dec 07 PHP
几行代码轻松实现PHP文件打包下载zip
Mar 01 PHP
PHP简单装饰器模式实现与用法示例
Jun 22 PHP
PHP使用两个栈实现队列功能的方法
Jan 15 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 PHP
PHP合并两个或多个数组的方法
Jan 20 #PHP
实例讲解通过​PHP创建数据库
Jan 20 #PHP
php中的explode()函数实例介绍
Jan 18 #PHP
thinkPHP框架中layer.js的封装与使用方法示例
Jan 18 #PHP
PHP内置函数生成随机数实例
Jan 18 #PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
Jan 17 #PHP
Laravel框架基于ajax实现二级联动功能示例
Jan 17 #PHP
You might like
PHP中的加密功能
2006/10/09 PHP
php设计模式  Command(命令模式)
2011/06/17 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
php导入导出excel实例
2013/10/25 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
Ajax 数据请求的简单分析
2011/04/05 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
js实现精美的银灰色竖排折叠菜单
2015/05/16 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
python实现图片处理和特征提取详解
2017/11/13 Python
python中scikit-learn机器代码实例
2018/08/05 Python
python内置数据类型之列表操作
2018/11/12 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
会计学自我鉴定
2014/02/06 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
事业单位考察材料范文
2014/12/25 职场文书
班主任自我评价范文
2015/03/11 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
一文弄懂MySQL索引创建原则
2022/02/28 MySQL