0

パラメータとして送信せずに、静的メソッドを呼び出す種類を知る必要があります

class foo
{
    public static function test($clase)
    {
        echo "Class invoke:" . FUNCTION();
    }
}

class A { public function x { foo::test(); } }
class B { public function y { foo::test(); } }
class C { public function z { foo::test(); } }
4

1 に答える 1

0

get_called_class()次のように、すべてのクラスを extends する場合は、遅延静的バインディングと (PHP >= 5.3) を使用できますfoo

class foo
{
    public static function test($clase)
    {
        echo "Class invoke:" . get_called_class();
    }
}

class A extends foo { public function x() { self::test(''); } }
class B extends foo { public function y() { self::test(''); } }
class C extends foo { public function z() { self::test(''); } }

これらのオブジェクトで:

$a = new A; $a->x();
$b = new B; $b->y();
$c = new C; $c->z();

出力として得られます:

Class invoke:A
Class invoke:B
Class invoke:C 
于 2013-02-19T22:01:21.607 に答える