1

さて、投稿のタイトルは少し紛らわしいかもしれません。

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

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() が機能していません。

4

2 に答える 2

2

PHP 5.3 より前では、これはハックなしでは不可能であり、Google で使用可能な用語である遅延静的バインディングとして知られています。

興味がある場合は、SO の記事に回答があります: Faking Late Static Binding before php 5.3

于 2010-02-20T13:51:00.630 に答える
0

そのために組み込みのReflection クラスを使用できると思います。

于 2010-02-20T13:52:37.753 に答える