如何在运行时动态拦截PHP中的代码?

时间:2015-01-08 08:29:43

标签: php dynamic-analysis

我需要一个PHP工具,一个扩展或其他东西,它可以让我动态分析PHP脚本中正在执行的所有代码(不是静态分析工具),例如:

  • 我有一些接口,有一些方法和一些实现这个接口的类,我需要在运行时拦截接口方法的方法调用,看看接口的哪个实现调用了实现的方法(带有命名空间的类) ),参数值是什么,方法做什么,返回值是什么,调用此方法之前执行了什么,之后将执行什么等等; ...
  • 我有一个写入和读取其属性的对象实例,我需要以上述方法所描述的奇特方式拦截属性读/写,变量赋值(查看之前执行的内容,将会是什么等等后执行......);
  • 截取声明,例如一个echo语句,看看语句之前发生了什么,语句的表达式是什么(带有变量插值),在这个语句之后将要执行什么;
  • 分析一个if-else,if-else if,for,while,do-while,case-switch等等条件,以确定使用了哪些操作数,哪些是它们的值,使用了哪些运算符,等...

所以,这样的事情。可能吗?我认为它可以使用PHP ticks实现,但在我看来有点不适合这个目的或者更好的不可能实现目标(如果我有declare(ticks=1)并且我注册了一个tick处理程序,我可以在每次执行语句时调用它,但不能用于ifs,fors,whiles等...而且我无法分析正在执行的代码......)

你能告诉我什么吗?

感谢您的关注!

编辑: 我不是在寻找调试器,我需要在代码中处理的事情,例如分析它并在某些事情不符合预期时抛出异常。

0 个答案:

没有答案