質問

さて、記事のタイトルが混乱少しかもしれません。

私はこのコードを持っています:

class A {
    public static foo() {
        return get_called_class();
    }
}

class B extends A {

}

class C {
    public function bar() {
        echo B::foo();
    }
}

出力:C

私は(FOOで取得したいのか)B.方法のクラス名である私は?クラスBの変化なしにこれを行うことができます。

よろしく、 ヤンオリバー

PS:__ __ CLASS、get_class()が動作していません。

役に立ちましたか?

解決

PHP 5.3の前に、これはハックなしでは不可能であると後期静的結合、googleable用語として知られています。

あなたは、ここでの答えとSOの記事興味を持っている場合:<のhref =「https://stackoverflow.com/questions/890505/faking-late-static-binding-before-php-5-3」 >偽造後期静的PHP 5.3の前にバインドする

他のヒント

私はあなたがビルトインの リフレクションクラスを使用することができると思います をそのためます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top