服务端 - PHP - OOP之Trait
一、概述
- 语法:trait Trait名;
- 描述:一组具有相同或者类似功能的代码集
- 特点:不能被实例化且只能嵌入宿主类中使用
- 作用:实现代码复用
- trait成员:包含常规成员、静态成员和抽象成员,但不包含类常量
二、实现
1. 覆盖基类方法,降低单继承的影响
//定义一个trait
trait tSayName {
public static function sayName() {
return '我的名字叫小明';
}
}
//基类
class a {
public static function sayName() {
return '我的名字叫小红';
}
}
//扩展类
class b extends a {
use tSayName;
}
//客户端代码
echo b::sayName();//trait在扩展类中的优先级大于基类,如果扩展类中也定义了同名的函数,那么当前类中的同名方法的优先级是最大的
2. 方法组合,横向拓展
//定义第一个trait
trait tA {
public static function sayName() {
return '我的名字叫小明';
}
}
//定义第二个trait
trait tB {
public static function sayFrom() {
return '我来自广东';
}
}
//定义第三个trait
trait tC {
use tA, tB;//把多个类中用到的相同或者类似的方法写到trait里就完事了
}
//工作类
class hello {
use tC; //相当于use tA, tB;
}
//客户端代码
echo hello::sayName(), hello::sayFrom();
三、课程总结
- 今天学习了 PHP 的面向对象编程,通过上课认真听讲和认真完成老师布置的作业,使得我对 PHP 面向对象编程的理解和运用更加深入和熟悉。最主要的知识点是明白和掌握了Trait的特点以及它的基本用法。