php面对对象之延迟静态绑定:static关键字

来源:互联网 发布:WiFi无法连接网络? 编辑:程序博客网 时间:2024/05/21 14:54

先看一段代码:

abstract class domainObject{    static $name = 'domain';    public static function create(){        return self::$name;    }}class document extends domainObject{    static $name = 'document';}var_dump(document::create());

运行结果:string ‘domain’ (length=6)
self被解析为定义create()的domainObject,而不是解析为调用self的document类;
通过引入延迟静态绑定概念,将上述代码中父类的self:: 替换为static::,

abstract class domainObject{    static $name = 'domain';    public static function create(){        return static::$name;    }}class document extends domainObject{    static $name = 'document';}var_dump(document::create());

运行结果即为:string ‘document’ (length=8)
延迟静态绑定可使php在子类中查找所有的属性、值

0 0
原创粉丝点击