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获取文件绝对路径的代码(上一级目录)
May 29 PHP
一个简单的PHP验证码实现代码
May 10 PHP
php中try catch捕获异常实例详解
Nov 21 PHP
PHP实现的简单日历类
Nov 29 PHP
YII Framework框架教程之安全方案详解
Mar 14 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
php读取和保存base64编码的图片内容
Apr 22 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
PDO::_construct讲解
Jan 27 PHP
laravel 验证错误信息到 blade模板的方法
Sep 29 PHP
基于ThinkPHP删除目录及目录文件函数
Oct 28 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
晋城吧对DiscuzX进行的前端优化要点
2010/09/05 PHP
基于php缓存的详解
2013/05/15 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
javascript的渐进增强与平稳退化浅谈
2013/11/12 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
举例详解Python中yield生成器的用法
2015/08/05 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
怎样在程序里获得一个空指针
2015/01/24 面试题
怎么写有吸引力的自荐信
2013/11/17 职场文书
教师年度考核自我鉴定
2014/01/19 职场文书
教师专业自荐书范文
2014/02/10 职场文书
安全责任协议书
2014/04/21 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
三八妇女节演讲稿
2014/05/27 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
经理岗位职责
2015/02/02 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书