一尘不染

生产代码中的PHP debug_backtrace获取有关调用方法的信息?

php

是否有一个令人信服的理由不仅仅debug_backtrace用于确定调用方法的类,名称和参数列表?不用于调试目的。它在函数名称中带有单词“
debug”,这使我感到有点脏,但是它适合我需要做的事情(可以在许多地方调用一个函数,需要从另一个系统调用调用方法)。可行,但这还是个坏主意吗?如果是这样,为什么?


阅读 238

收藏
2020-05-29

共1个答案

一尘不染

它确实感觉有点脏,但是正如在许多地方有充分的文献记载,论断和殴打一样,PHP并不是为优雅而设计的系统。

为应用程序逻辑使用debug_backtrace的一个令人费解的原因是,将来使用PHP的开发人员可能会决定“这只是调试功能,性能无关紧要”。

如果您对执行此操作的“更好”方法感兴趣,则可以使用PHP的魔术常数来传递调用方法和类名,然后使用ReflectionMethod对象提取所需的任何其他信息。

我用引号括起来更好,因为尽管这样做会更干净,更正确,但是实例化Reflection对象的开销 可能 比使用debug_backtrace函数要大。

2020-05-29