From : http://my.oschina.net/liuhui1990/blog/38611
基於PHP版本: 5.3.5
PHP5.3 以後引入了延遲靜態繫結:
static(關鍵字) 類似於 self(關鍵字) , 但它指向的是被調用的類(Document) 而不是包含類(DomainObject), static 和 self 的區別:
<?phpclass DomainObject{ public static function createStatic(){ return new static(); } public static function createSelf(){ return new self(); }}class User extends DomainObject{ }class Document extends DomainObject{ }echo '<pre>';var_dump( Document::createStatic());var_dump( Document::createSelf());
Result :
object(Document)[1]object(DomainObject)[1]
以前你這麼寫:
abstract class DomainObject{}class User extends DomainObject{ public static function create(){ return new User(); }}class Document extends DomainObject{ public static function create(){ return new Document(); }}
現在, 你可以這麼寫:
abstract class DomainObject{ public static function create(){ return new static(); }}class User extends DomainObject{}class Document extends DomainObject{}
好處: 可以節省大量重複代碼~