我想知道,你可以创建一个函数或其他东西,在网站上寻找其他函数调用吗?我认为,如果有一个母版页,你可以把它包含在最顶层,它应该在网站上工作。
但我不知道该怎么做。
有点像debug_backtrace();
,但是全球性的。换句话说,一个函数可以执行在此函数之后调用的函数。
嗯,我知道你可以用特定的call_user_func();
做到这一点,因此跟踪所发生的一切,但是......任何动态的方式?
提前致谢!
这样做的目的是动态保持被调用函数链。所以在某些时刻,例如,我需要从链中的第3个函数返回一个值,所以我可以使用类似$calls[2]; // the stored returned value or an array containing info about function + returned value
的东西来检索它。
它会在每次调用时将函数数据添加到链中,其中第一个调用是$key = 0
。因此,出于调试目的,当我的函数连续失败 x 函数时,我很想知道有关先前调用的函数的信息,可能会返回错误的值,导致某些部分出错上。
答案 0 :(得分:1)
我不相信有,我怀疑它是否会起作用并且会有用。函数依次调用其他函数,甚至是内部函数。即使是日志记录功能本身也是功能,因此您最终会获得大量信息,您几乎无法做任何相关的信息。如果存在这样的解决方案(可能),它将不会在PHP本身中开发,而是由PHP加载或编译的模块。
如果要将方法调用记录到类实例,可以进行一些挂钩。您可以创建一个实现__call
的类。然后,对于要记录的实例,将该实例分配给日志类的实例,并将该日志类实例分配给存储原始类的变量。
然后,每个方法调用都会定向到您的班级,您可以在调用原始方法之前记录每个调用。
答案 1 :(得分:1)
看起来你正在寻找一些AOP技术。如果未设置某个(全局)标志(显示跟踪),则可以编写已编织的代码以立即返回,否则打印回溯。
PHP不直接支持AOP,但您可以修补PHP内核或使用工具根据AOP编织创建(转换)代码。我还没有将它用于PHP,所以你必须google。
答案 2 :(得分:0)
试试diyism_trace.php: