您的位置:首页 > 编程语言 > PHP开发

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

2016-10-13 22:51 351 查看
先看一段代码:

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在子类中查找所有的属性、值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对象 php