本节内容:
php 延迟静态绑定static关键字
例子:
<?php
abstract class DomainObject {
public static function create()
{
return new self();
}
}
class User extends DomainObject {}
class Document extends DomainObject {}
print_r(Document::create());
说明:
以上代码运行失败,因为 self 被解析为 DomainObject,将 self 换为 static。
例子:
<?php
abstract class DomainObject {
public static function create()
{
return new static();
}
}
class User extends DomainObject {}
class Document extends DomainObject {}
print_r(Document::create());
运行成功,浏览器输出:
Document Object ( )
说明:
static 类似于 self,但它指的是被调用的类而不是包含类。