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中常用数组处理方法实例分析
Aug 30 PHP
PHP基础学习小结
Apr 17 PHP
解析php addslashes()与addclashes()函数的区别和比较
Jun 24 PHP
PHP生成sitemap.xml地图函数
Nov 13 PHP
WordPress自定义时间显示格式
Mar 27 PHP
php循环table实现一行两列显示的方法
Jun 04 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
Feb 05 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
Feb 08 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 PHP
PHP预定义接口――Iterator用法示例
Jun 05 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 程序员也要学会使用“异常”
2009/06/16 PHP
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
Python 面向对象 成员的访问约束
2008/12/23 Python
Python实现简单状态框架的方法
2015/03/19 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
Python 变量的创建过程详解
2019/09/02 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
总裁助理岗位职责
2014/02/17 职场文书
调解协议书
2014/04/16 职场文书
学校宣传标语
2014/06/18 职场文书
上班离岗检讨书
2014/09/10 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
靠谱准确的求职信
2019/04/02 职场文书
MySQL获取所有分类的前N条记录
2021/05/07 MySQL