让每一名学员高薪就业
返回列表 发新帖

PHP中的trait

[复制链接]

146

主题

153

帖子

1123

积分

精英

Rank: 5Rank: 5

积分
1123
发表于 2018-4-12 14:17:55  | 显示全部楼层 | 阅读模式
我们知道PHP是单继承,也就是一个子类只能继承一个父类,如果要实现一个类继承多个类的属性和方法,就得使用继承链,也就是孙子类继承一个父类,父类再继承一个爷爷类,这样孙子类就拥有了父类和爷爷类的属性和方法,虽然可以实现,但是还是很僵硬,所以自 PHP 5.4.0 起,PHP 新增了一种代码复用的方法,称为 trait
一、什么是trait
Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 methodTrait Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。
Trait Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。
二、Trait声明和使用
trait的声明使用Trait关键词,Trait不能实例化,代码如下:
  1. <?php
  2. //声明一个trait
  3. trait Person
  4. {
  5.     //声明属性
  6.     public $name;
  7.     public $age;

  8.     //声明方法
  9.     public function say()
  10.     {
  11.         echo "My Name is {$this->name},{$this->age} old";
  12.     }
  13. }

  14. //声明一个类
  15. class Student{
  16.     //使用Person Trait
  17.     use Person;
  18. }
  19. //声明一个学生对象
  20. $student=new Student();
  21. //给对象赋值
  22. $student->name="codeWen";
  23. $student->age=30;
  24. //调用方法
  25. $student->say();
复制代码
三、结果
图片1.png

回复

使用道具 举报

0

主题

109

帖子

1451

积分

精英

Rank: 5Rank: 5

积分
1451

活跃用户

发表于 2018-4-19 09:56:06  | 显示全部楼层
唉,搞的脑壳疼
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

最新活动

联系我们

Java培训  |   PHP培训  |   UI培训  |   H5培训  |   Python培训  |   大数据培训  |   如何报名  |   视频下载
快速回复 返回顶部 返回列表