PHP TRAIT

本文介绍了PHP中的Trait特性,一种用于复用非继承代码的功能增强机制。Trait不能实例化,但可以组合功能性操作和属性,类似于装饰器模式。文章通过示例详细解释了Trait的使用方法,包括优先级、冲突解决、方法可见性调整等内容。

PS: 阅读 PSR-4: Autoloader 规范的时候, 无意中看到了 trait,于是参阅了官方手册,详细了解了下,姿势大概知道了,可以类似装饰器一样玩儿,等等。。。 >.< 另外,也让我想起《冒号课堂》里面关于继承和合成的一句话:继承是一种静态、显性的关系,合成是一种动态、隐形的关系。感觉TRAIT不错喔!先了解下。

Trait 简介: trait和类很相似,但它只是用来组合一些功能性的操作和属性,可以理解为就是一些公共函数的集合。Trait不能被实例化,不过它和接口又不同,它的函数需要实现。它只是传统的继承的一种功能增强,方便实现一些公共行为的平行扩展。

目录

  1. 优先级
  2. 同时使用多个
  3. 冲突解决
  4. 改变方法的可见性
  5. traits自组合
  6. 抽象traits成员
  7. 静态traits成员
  8. 属性
  9. 其他注意(来自用户评论)
    1. 和class静态成员的区别 见附录1
    2. use关键字在traits和namespace的区别
    3. More

PS: 主要类目,见官方文档非常清晰,逐个示例理解和尝试使用即可

附录1
- 类的静态属性

class TestClass {
    public static $_bar;
}
class Foo1 extends TestClass {}
class Foo2 extends TestClass {}
Foo1::$_bar = "Hello";
Foo2::$_bar = "World";

echo Foo1::$_bar, " ", Foo2::$_bar, "\n";  // World World
  • trait的静态属性
trait TestTrait {
    public static $_bar;
}
class Foo1 {
    use TestTrait;
}
class Foo2 {
    use TestTrait;
}
Foo1::$_bar = "Hello";
Foo2::$_bar = "World";
echo Foo1::$_bar, " ", Foo2::$_bar, "\n"; //Hello World
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值