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连接SQLSERVER 注意事项(附dll文件下载)
Jun 28 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
PHP循环函数使用介绍之PHP基础入门教程
Sep 21 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
php函数与传递参数实例分析
Nov 15 PHP
php打包压缩文件之ZipArchive方法用法分析
Apr 30 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
PHP实现json_decode不转义中文的方法
May 20 PHP
php批量修改表结构实例
May 24 PHP
PHP实现合并两个排序链表的方法
Jan 19 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 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下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
那些年一起学习的PHP(二)
2012/03/21 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
javascript 写类方式之五
2009/07/05 Javascript
基于Jquery的温度计动画效果
2010/06/18 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
python删除列表中重复记录的方法
2015/04/28 Python
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
Python3.4学习笔记之列表、数组操作示例
2019/03/01 Python
python关于矩阵重复赋值覆盖问题的解决方法
2019/07/19 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
八一慰问活动方案
2014/02/07 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
2014年工商所工作总结
2014/12/09 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
JavaScript 定时器详情
2021/11/11 Javascript
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python