PHP-哪个类调用了我的静态方法?
我需要知道哪种调用静态方法,而不作为参数发送PHP-哪个类调用了我的静态方法?,php,methods,static,Php,Methods,Static,我需要知道哪种调用静态方法,而不作为参数发送 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 functi
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(); } }
如果让所有类扩展
foo
,则可以使用后期静态绑定和(PHP>=5.3),如下所示:
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();
你将:
您可以使用
debug\u backtrace()
,但我希望这不是用于生产?您可以将get\u class()
作为参数传递给test()
。感谢您的回复,有没有不继承的方法?没有将类名传递给test()
@nickb不,有:)。使用debug\u backtrace()
。但是,对于任何一种生产用途,都不是一个好主意。我必须发送一个对象作为一个参数,谢谢“NICB”,因为正如Colin Morelli所说的,使用Debug GraceBracTrink“对于任何一种生产用途都不是一个好主意。”@柯林-我不认为<代码> Debug GraceBracTrace()/代码>是一种可行的或有效的解决方案。如果你不得不在建议后面加上“不要在生产中使用”,这不是一个可行的解决方案。
Class invoke:A
Class invoke:B
Class invoke:C