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 Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
php 定义404页面的实现代码
Nov 19 PHP
php curl模拟post提交数据示例
Dec 31 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
php访问数组最后一个元素的函数end()用法
Mar 18 PHP
php如何连接sql server
Oct 16 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
Jan 09 PHP
php实现生成验证码实例分享
Apr 10 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
Jun 30 PHP
php中static 静态变量和普通变量的区别
Dec 01 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 PHP
laravel-admin 实现给grid的列添加行数序号的方法
Oct 08 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
PHP获取中英混合字符串长度的方法
2014/06/07 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
asp.net和php的区别点总结
2019/10/10 PHP
jQuery的学习步骤
2011/02/23 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
详解Python中的多线程编程
2015/04/09 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
python 如何设置守护进程
2020/10/29 Python
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
工作表扬信的范文
2014/01/10 职场文书
社区包粽子活动方案
2014/01/21 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
nginx请求限制配置方法
2021/07/09 Servers
Redis入门教程详解
2021/08/30 Redis
Javascript webpack动态import
2022/04/19 Javascript