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开发入门教程之面向对象
Dec 05 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
PHP句法规则详解 入门学习
Nov 09 PHP
php xml常用函数的集合(比较详细)
Jun 06 PHP
深入Apache与Nginx的优缺点比较详解
Jun 17 PHP
php中define用法实例
Jul 30 PHP
php 利用array_slice函数获取随机数组或前几条数据
Sep 30 PHP
php中使用GD库做验证码
Mar 31 PHP
ThinkPHP中limit()使用方法详解
Apr 19 PHP
PHP 类与构造函数解析
Feb 06 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
Dec 02 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调用三种数据库的方法(1)
2006/10/09 PHP
php 字符串函数收集
2010/03/29 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
Python数据类型详解(一)字符串
2016/05/08 Python
Python numpy 点数组去重的实例
2018/04/18 Python
python opencv实现运动检测
2018/07/10 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
python实现简单成绩录入系统
2019/09/19 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
成教自我鉴定
2013/10/27 职场文书
文明学生标兵事迹
2014/01/21 职场文书
优秀企业获奖感言
2014/02/01 职场文书
空气环保标语
2014/06/12 职场文书
村委会贫困证明范本
2014/09/17 职场文书
2016继续教育研修日志
2015/11/13 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL