有没有办法确定是否在PHP的同一个类中调用了一个函数? 除了使用像debug_backtrace?
这样的东西更新
这就是我目前正在做的事情:
class Alex {
function __construct()
{
$this->internal = false;
}
function a()
{
$this->internal = true;
$this->b();
}
function b()
{
if($this->internal)
// ...
else
// ...
}
}
答案 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。