这已经证明有点难以解释,它可能是非常愚蠢的设计,但出于好奇,有没有办法获得静态方法的类的名称,即调用另一个静态方法另一堂课。
类A在类B中调用静态方法B,它在类C中调用静态方法C.在类C中,我需要调用静态方法C的立即方法的类名,它将是类B.
class A {
function A () {
echo B::B();
}
}
class B {
function B () {
return C::C();
}
}
class C {
function C () {
return get_called_class();
}
}
返回:A。我希望它返回:B。
这甚至可能吗?
答案 0 :(得分:1)
你可以使用堆栈跟踪。看看http://php.net/debug_backtrace。
由于类的封装,设计不希望该方法知道外面发生了什么。因此,我想到的唯一方法是 - 相当古怪 - 方式。
你不应该依赖那些信息,因为它会破坏封装。如果您需要该信息,请将其作为参数传递!
答案 1 :(得分:0)
不确定您正在尝试做什么,但请查看PHP page for the Static keyword。你提到了一个静态方法,但代码在任何地方都没有静态。