我个人看不出这是可能的,或者你为什么会想要做这种方式。首先,我怀疑debug_backtrace()
比变量static
贵很多。
正如您所指出的那样,调用之间似乎会改变的唯一回溯特性是行号(函数被调用的地方)。而且,如果你在一个循环中运行函数,那甚至都不会改变,因为它们都将在每次迭代时从同一行调用。
我如果是你,我会坚持使用状态变量;至于你的同事,如果你对它的工作原理感到好奇(我知道我是!),你或许可以让他向你展示一个代码来展示他的方法。
编辑(从注释):基本上,同事的debug_backtrace()
方法存储在使用被称为类的键阵列的布尔值。
用简单的英语,这里发生了什么:
- 被称为 “JS” 调用函数?
- 如果是这样,请存储在JS标签的数组中;否则,使用CSS标签的数组。
- 检查是否指定了类;如果不是,请使用这个类。
- 如果我们有一个布尔值给定的类在标签数组中,这不是第一次。
- 否则,将给定类的布尔值设置为为true。
我知道你在想什么:这没有任何意义,它甚至不存储调用函数的名字!你说得对;这种方法是不可扩展的,并且具有巨大的开销。
如果你想要做这个方法所做的事情,只需在有问题的类中使用一个静态变量来跟踪函数是否被调用。您的同事的方法—对不起,说—是低效率和无效。
您是否尝试过两次运行函数并比较debug_backtrace的输出? –
是的。输出仅在数组[0] ['Line']中有所不同,即只有行号改变......我猜想这是正确的,因为堆栈跟踪没有改变。它仍然使用相同的规则和路径调用相同的函数。 – Rash