如果函数在内部调用

时间:2013-03-07 15:39:43

标签: php class function internal

有没有办法确定是否在PHP的同一个类中调用了一个函数? 除了使用像debug_backtrace

这样的东西

更新

这就是我目前正在做的事情:

class Alex {
  function __construct()
  {
     $this->internal = false;
  }

  function a()
  {
    $this->internal = true;
    $this->b();
  }

  function b()
  {
    if($this->internal) 
      // ...
    else
      // ...
  }
}

3 个答案:

答案 0 :(得分:2)

我不确定你为什么要那样做;这种要求是可疑的,通常是有充分理由的。

也就是说,您可以使用附加参数对protected函数进行public克隆,该参数可以告诉您调用者是内部还是外部,并使public版本延迟到protected实施。

class Before
{
    public foo() { /* code here */ }
}

class After
{
    public foo() { $this->fooCore(false); }
    protected fooCore($calledFromInside = true) { /* code here */ }

    // At this point you should make sure that you never call $this->foo()
    // directly from inside class After
}

答案 1 :(得分:0)

不是我知道的。我通过在类中调用时传递一个值的额外可选参数解决了类似的问题。

HTH:)

答案 2 :(得分:-1)

可以在NetBeans中调试PHP,就像您可以看到debugging in NetBeans一样。此外,您可以在sseful PHP tools上找到有用的工具,例如Webgrind或Xdebug。