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

namespace App\Http\Traits;use App\Brand;

trait BrandsTrait {

public function brandsAll() {

// 从品牌表中获取所有品牌

$brands = Brand::all(); return $brands;

}

}

php调用trait方法,PHP Laravel中的Trait使用方法相关推荐

  1. 【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )

    文章目录 一.判定当前线程是否是主线程 二.子线程中执行主线程方法 三.主线程中执行子线程方法 一.判定当前线程是否是主线程 在 Android 中 , 如果要判定当前线程是否是主线程 , 可以使用如 ...

  2. 魔术方法php,PHP中常用的魔术方法

    我们在PHP中经常用到魔术方法,像构造方法,析构方法等等魔术变量,下面总结一下一些常用的魔术变量: __construct(),__destruct(),__clone(),__autoload(), ...

  3. vue组件穿方法_vue组件中的数据传递方法

    Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递.组件之间传递数据大致分为三种情况: 父组件向子组件传递数据,通过 props ...

  4. ES6/02/创建对象,构造函数和原型,原型和原型链,this指向,类,ES5新增的方法,数组方法,回调函数,ES5新增的字符串方法,ES5中新增的对象方法

    创建对象 1,利用new Object()创建对象 var obj1 =new Object(); 2,利用对象字面量创建对象 var obj2={}; 3,利用构造函数创建对象 function S ...

  5. python特殊变量方法 不懂_Python中的常见特殊方法—— del方法

    __del__() 方法用于销毁Python对象--在任何Python对象将被系统回收的时候,系统都会自动调用这个方法.但是不要以为对一个变量执行del操作,该变量引用的对象就会被回收,当然不是,如果 ...

  6. stream map方法_Java Stream中map和flatMap方法

    最近看到一篇讲stream语法的文章,学习Java中map()和flatMap()方法之间的区别. 虽然看起来这两种方法都做同样的事情,都是做的映射操作,但实际上差之毫厘谬以千里. 通过演示Demo中 ...

  7. python使用get和post方法_python爬虫中get和post方法介绍以及cookie作用

    首先确定你要爬取的目标网站的表单提交方式,可以通过开发者工具看到.这里推荐使用chrome. 这里我用163邮箱为例 打开工具后再Network中,在Name选中想要了解的网站,右侧headers里的 ...

  8. python列表去重的方法_Python列表中去重的多种方法

    怎么快速的对列表进行去重呢,去重之后原来的顺序会不会改变呢? 去重之后顺序会改变 set去重 列表去重改变原列表的顺序了l1 = [1,4,4,2,3,4,5,6,1] l2 = list(set(l ...

  9. 光滑噪声数据常用的方法_数据挖掘中常用的数据清洗方法

    是新朋友吗?记得先点蓝字关注我哦- 数据挖掘中 常用的数据清洗方法 在数据挖掘过程中,数据清洗主要根据探索性分析后得到的一些结论入手,然后主要对四类异常数据进行处理,分别是缺失值(missing va ...

最新文章

  1. 13条注释 tips
  2. VTK:vtkCaptionActor2D用法实战
  3. NSEnumerator使用
  4. Docker入门 三 用服务来扩展和负载均衡你的应用
  5. 【语言学习】Java
  6. Qt 窗口置顶 | 和取消置顶
  7. 卖家如何利用关键词进行SEO优化以提高排名?
  8. 【初学数据结构系列】 顺序表的实现——通讯录
  9. 前端职业规划 - 写给年轻的前端韭菜们
  10. 我很忙,但对你随时有空!
  11. PCB板材的基础知识
  12. 池化层(pooling layer) 感受野(Receptive Field) 神经网络的基本组成
  13. 一文看懂怎么用 Python 做数据分析
  14. 怎么样删除计算机管理员用户账户,怎么样删除电脑中多出来的管理员账户
  15. 哈夫曼树:HDU5884-Sort(队列、哈夫曼树)
  16. 块交织器5×5 verilog设计及仿真实现
  17. hyperv 服务器性能,Hyper-v 处理器性能
  18. monad_Monad界面
  19. Android学习文章推荐
  20. 5.名词复数、动词规则、代词、形容词、副词(不包含不规则)

热门文章

  1. IT行业最重要的四件宝--我的实习体会
  2. C++ 临时变量的常量性
  3. ASP.NET Atlas简单控件介绍——InputControl,TextBox,Button和CheckBox
  4. ansible安装使用入门
  5. 【win32汇编】0x04 第一个窗口程序
  6. malware analysis、Sandbox Principles、Design Implementation
  7. [安全测试报告]针对某厂商的一次渗透性测试
  8. python日志分割(转)
  9. 机器学习中的基本概念
  10. keepalived track script introduce