博客列表 >服务端 - PHP - OOP之Trait

服务端 - PHP - OOP之Trait

郴
原创
2020年05月08日 15:35:58710浏览

服务端 - PHP - OOP之Trait

一、概述

  • 语法:trait Trait名;
  • 描述:一组具有相同或者类似功能的代码集
  • 特点:不能被实例化且只能嵌入宿主类中使用
  • 作用:实现代码复用
  • trait成员:包含常规成员、静态成员和抽象成员,但不包含类常量

二、实现

1. 覆盖基类方法,降低单继承的影响

  1. //定义一个trait
  2. trait tSayName {
  3. public static function sayName() {
  4. return '我的名字叫小明';
  5. }
  6. }
  7. //基类
  8. class a {
  9. public static function sayName() {
  10. return '我的名字叫小红';
  11. }
  12. }
  13. //扩展类
  14. class b extends a {
  15. use tSayName;
  16. }
  17. //客户端代码
  18. echo b::sayName();//trait在扩展类中的优先级大于基类,如果扩展类中也定义了同名的函数,那么当前类中的同名方法的优先级是最大的

2. 方法组合,横向拓展

  1. //定义第一个trait
  2. trait tA {
  3. public static function sayName() {
  4. return '我的名字叫小明';
  5. }
  6. }
  7. //定义第二个trait
  8. trait tB {
  9. public static function sayFrom() {
  10. return '我来自广东';
  11. }
  12. }
  13. //定义第三个trait
  14. trait tC {
  15. use tA, tB;//把多个类中用到的相同或者类似的方法写到trait里就完事了
  16. }
  17. //工作类
  18. class hello {
  19. use tC; //相当于use tA, tB;
  20. }
  21. //客户端代码
  22. echo hello::sayName(), hello::sayFrom();

三、课程总结

  • 今天学习了 PHP 的面向对象编程,通过上课认真听讲和认真完成老师布置的作业,使得我对 PHP 面向对象编程的理解和运用更加深入和熟悉。最主要的知识点是明白和掌握了Trait的特点以及它的基本用法。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议