引入: PHP继承模型中有个遗留很久的问题。那就是父类中引用拓展类的最终状态比较困难。
接下来看用两个例子来说明
第一个例子:
<?php
class NBA {
static $name = "Michael Jordan";
public static function play(){
return self::$name
}
}
class CBA{
static $name = "Guo Ai Lun";
}
echo CBA::play();
Michael Jordan
由此可见 CBA::play()无法访问CBA中$name的值,为了解决这个问题,需要再CBA中重写play方法。
也可以通过引用延迟静态绑定
接下来看第二个例子
<?php
class NBA {
static $name = "Michael Jordan";
public static function play(){
return static::$name
}
}
class CBA{
static $name = "Guo Ai Lun";
}
echo CBA::play();
Guo Ai Lun
通过是用静态作用域,可以强制Php 在最终的类中查找属性值。
网友评论