搜索
首页
笔记
案例
关于
课程列表
PHP
php基础
基本语法
流程控制
函数
数组
对象
Trait
字符串处理
正则表达式
SPL
输出缓存
php与xml
生成器
php常用扩展
错误与异常处理
日期与时间
文件系统
图像处理
数据库开发
Mysqli扩展
Db类
高级功能
会话控制
CURL
PHP安全
PHP版本
从5.6到7.0
从7.0到7.1
课程导航
计算机基础知识
C
Linux
linux常用软件
计算机网络
程序员修养
设计模式
工具
Git
composer
vim
IntelliJ IDEA
wireshark
laravel
Spring
SpringMVC
Maven
数据库
MySQL
Redis
MongoDB
JDBC
Mybatis
MyBatis-Plus
服务端编程
PHP
Java
shell script
JavaWeb
HTML / CSS
HTML
CSS
HTML5
CSS3
BOOTSTRAP
JavaScript
JavaScript
JQuery
layui
对象
字符串处理
Trait
Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。 Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。 ## 用法 ``` echohello(); echo ' '; $this->echoworld(); } } (new C)->echohello(); (new C)->echoworld(); (new C)->echohelloworld(); ``` ## 优先顺序示例 优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。 ```php class Base{ public function sayHello() { echo 'base:hello'; } } trait T { function sayHello () { echo 'T:hello'; } } class C extends Base{ use T; } $c = new C; $c->sayHello(); // base:helloT:hello ``` ## 多个trait有相同方法 ``` sayhello(); // world ``` ## 修改trait里方法的访问权限 ``` sayhello(); // 出错 ``` ## 从trait组成trait ``` sayhello(); (new C)->sayname('gwx'); ``` ## 其他 trait 支持抽象方法及静态方法 trait 支持属性
对象
字符串处理
文章目录