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()(PHP >= 5.3) 如果你让你的所有类都 extend 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 回答