是否有令人信服的理由不仅仅debug_backtrace用于确定调用方法的类,名称和参数列表?不用于调试目的.它在函数名中有"debug"这个词,这让我感觉有点脏,以这种方式使用它,但它符合我需要做的事情(一个可以从很多地方调用的函数)需要从另一个系统调用调用方法).它有效,但这仍然是个坏主意吗?如果是这样,为什么?
有什么方法可以使用debug_backtrace()之外的其他东西来获取调用函数吗?
我正在寻找一种不那么贪婪的方式来模拟朋友或内部的范围.
假设我有A班和B班.
直到现在,我一直在使用debug_backtrace(),这太贪心了(恕我直言).
我想到了这样的事情:
<?php
class A
{
public function __construct(B $callerObj) {}
}
class B
{
public function someMethod()
{
$obj = new A($this);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
如果你想把它限制在一个特定的类,可能没关系,但是假设我有300个类,我想将它限制为25个?
一种方法是使用接口来聚合:
public function __construct(CallerInterface $callerObj)
但它仍然是一个丑陋的代码.
而且,你不能在静态类中使用这个技巧.
有更好的主意吗?