后期静态绑定
最后更新于:2022-04-02 04:31:30
## 后期静态绑定
**self::**
```php
test();
```
有没有办法突破php的这个特性呢,使其延后绑定,答案是:有,用关键字 static。
**static::**
```php
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
static::who(); // 后期静态绑定从这里开始
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test(); // B
```
> 该功能从语言内部角度考虑被命名为“后期静态绑定”。“后期绑定”的意思是说,static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。
更多细节、用法请查看官方文档。
### 参考
[PHP: 后期静态绑定 - Manual](http://php.net/manual/zh/language.oop5.late-static-bindings.php)
last update:2017-8-29 11:06:21
';