php遅延静的バインド:staticキーワード

1962 ワード

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に変換しました.
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に似ていますが、クラスを含むのではなく呼び出されたクラスを指します.