当前位置: 首页 > news >正文

PHP之Trait理解, Trait介绍

一、来源

自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait。

Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。

Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。

二、例子

1、Trait 示例

<?php
trait ezcReflectionReturnInfo {function getReturnType() { /*1*/ }function getReturnDescription() { /*2*/ }
}class ezcReflectionMethod extends ReflectionMethod {use ezcReflectionReturnInfo;/* ... */
}class ezcReflectionFunction extends ReflectionFunction {use ezcReflectionReturnInfo;/* ... */
}
?>

2、优先级

从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

<?php
class Base {public function sayHello() {echo 'Hello ';}
}trait SayWorld {public function sayHello() {parent::sayHello();echo 'World!';}
}class MyHelloWorld extends Base {use SayWorld;
}$o = new MyHelloWorld();
$o->sayHello();
?>

以上例程会输出:

Hello World!

http://www.lryc.cn/news/266042.html

相关文章:

  • SpringMVC:执行原理详解、配置文件和注解开发实现 SpringMVC
  • 增量式旋转编码器在STM32平台上的应用
  • INFINI Gateway 如何防止大跨度查询
  • 【模式识别】探秘分类奥秘:最近邻算法解密与实战
  • 【Redis】分布式锁
  • Linux访问firefox 显示Error: no DISPLAY environment variable specified
  • 线性回归简介
  • Log4net 教程
  • test-01-java 单元测试框架 junit 入门介绍
  • Linux系统中跟TCP相关的系统配置项
  • python图片批量下载多线程+超时重试
  • 冒泡排序之C++实现
  • 【Spring实战】04 Lombok集成及常用注解
  • ubuntu-22.04.3 配置
  • [工具]java_sublime的快速使用
  • 【银行测试】银行金融测试+金融项目测试点汇总...
  • 将PPT的图保持高分辨率导入到Word / WPS中
  • 如何在Spring Boot中优雅地进行参数校验
  • 图还能有数据库?一文带你了解图数据库是个什么东西!
  • 力扣思维题——寻找重复数
  • 基于Kubernetes的jenkins上线
  • 每日一题——轮转数组
  • Unity手机移动设备重力感应
  • nodejs微信小程序+python+PHP基于推荐算法的电影推荐系统-计算机毕业设计推荐django
  • Linux 配置 swap 区
  • AG16KDDF256 User Manual
  • w15初识php基础
  • powerbuilder Primary! Delete! Filter! 三个缓冲区的作用
  • Confluent 与阿里云将携手拓展亚太市场,提供消息流平台服务
  • 【一起学Rust | 框架篇 | Tauri2.0框架】Tauri2.0环境搭建与项目创建