【问题标题】:PHP: Get class name of static method calling another static classPHP:获取调用另一个静态类的静态方法的类名
【发布时间】:2015-04-10 20:26:27
【问题描述】:

这已经证明有点难以解释,而且它可能是非常愚蠢的设计,但出于好奇,有没有办法获取静态方法的类名,即在另一个类中调用另一个静态方法。

A 类调用 B 类中的静态方法 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。

这可能吗?

【问题讨论】:

  • 您可以将其与调用一起作为参数发送

标签: php oop


【解决方案1】:

您可以为此使用堆栈跟踪。看看http://php.net/debug_backtrace

由于类的封装,设计上不希望该方法知道外面发生了什么。因此,我想到的唯一方式就是这种——相当古怪的方式。

而且您不应该依赖这些信息,因为它会破坏封装。如果您需要该信息,请将其作为参数传递!

【讨论】:

  • 是的,你是对的。我会将它作为参数传递。谢谢!
【解决方案2】:

不确定您到底想做什么,但请查看PHP page for the Static keyword。您提到了一个静态方法,但代码在任何地方都没有静态。

【讨论】:

    猜你喜欢
    • 2016-06-26
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    相关资源
    最近更新 更多