PHP基础补全系列:Trait
来源:互联网 发布:保密三合一软件 编辑:程序博客网 时间:2024/06/05 11:01
这个系列的文章是用来学习PHP的一些语法特性,用来加强自己对PHP的理解。在大多数情况下都是作为自己的学习笔记,文章内容不会超出PHP手册,所以想了解相关特性的可以直接去看PHP手册。
PHP手册链接
PHP 5.4加入了trait。
个人理解为trait在PHP中变相实现了多继承。但是我还不是很理解它的使用场景。
<?phptrait TraitClass {function say () {echo "trait say<br/>";}function walk () {echo "trait walk<br/>";}}class Father {function say () {echo "father say<br/>";}}class Son extends Father {use traitClass;function walk () {echo "son walk<br/>";}}/** * trait、基类和当前类同名方法优先级 * 当前类>trait>基类 */$son = new Son();//todo trait方法与基类方法同名的情况下,trait的方法优先于基类的方法$son->say();//输出结果:trait say//todo 当前类的方法同名时,当前类方法优先于trait的方法$son->walk();//输出结果:son walktrait Trait1 {function say () {echo "Trait1 say<br/>";}function walk () {echo "Trait2 walk<br/>";}function run () {echo "Trait1 run<br/>";}}trait Trait2 {function say () {echo "Trait2 say<br/>";}function walk () {echo "Trait2 walk<br/>";}}trait Trait3 {function say () {echo "Trait3 say<br/>";}function walk () {echo "Trait3 walk<br/>";}}class Son1 {use Trait1, Trait2, Trait3 {Trait1::say insteadof Trait2, Trait3;Trait2::walk insteadof Trait1, Trait3;Trait1::run as trait1Run;}}/** * 当有多个trait方法重名的时候,可以使用instendof方法排除不用的选项。个人觉得这个地方比较奇怪,不是指定而是排除,需要将那些不使用的trait一一列举出来 * 使用别名的方式不能解决冲突问题,因为使用别名之后,两种调用方式都会保留 */$son1 = new Son1();//todo 当有多个trait方法重名的时候,需要将那些不使用的trait一一排除$son1->say();//输出结果:Trait1 say$son1->walk();//输出结果:Trait2 walk//todo 使用别名的方式不能解决冲突问题,因为使用别名之后,两种调用方式都会保留$son1->run();//输出结果:Trait1 run$son1->trait1Run();//输出结果:Trait1 run
0 0
- PHP基础补全系列:Trait
- PHP基础补全系列:static
- PHP基础补全系列:异常处理
- PHP基础补全系列:SPL(数据结构)
- php Trait 基础应用讲解
- php trait
- php trait
- PHP TRAIT
- PHP Trait
- PHP trait
- php trait
- PHP Trait
- php-Trait
- php trait
- php trait
- 自动补全 php+ajax
- php补全填充函数
- vim增加php自动补全
- Scade——学习笔记(2)
- 深入浅出JMS(ActiveMQ)
- SQL数据库进程阻塞导致客户端无法插入数据
- adb环境配置
- PATA-1016Phone Bills (25)
- PHP基础补全系列:Trait
- [Oracle]创建序列sequence
- Android开发中的一些框架(一)
- 纯css修改滚动条样式颜色
- InstallShield 博客
- Android Context 上下文
- JS动态修改页面EasyUI datebox不生效、EasyUI动态添加Class、EasyUI动态渲染解析解决方案
- oracle JOB 查询 添加 修改 删除 运行
- Android ContentProvider全面解析