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 28 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
php获取服务器信息的实现代码
Feb 04 PHP
解析yii数据库的增删查改
Jun 20 PHP
php一维二维数组键排序方法实例总结
Nov 13 PHP
php通过ksort()函数给关联数组按照键排序的方法
Mar 18 PHP
深入解析PHP的Laravel框架中的event事件操作
Mar 21 PHP
Linux php 中文乱码的快速解决方法
May 13 PHP
php实现在线通讯录功能(附源码)
May 13 PHP
php字符串的替换,分割和连接方法
May 23 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 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中判断变量为空的几种方法小结
2013/11/12 PHP
php生成图片验证码
2015/06/09 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
webpack打包js的方法
2018/03/12 Javascript
python开发之for循环操作实例详解
2015/11/12 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python安装教程
2018/02/28 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
python遍历小写英文字母的方法
2019/01/02 Python
python3.6数独问题的解决
2019/01/21 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
python中的yield from语法快速学习
2020/11/06 Python
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
大学生职业生涯规划范文
2013/12/31 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
名人传读书笔记
2015/06/26 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android