我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

分析别人的php代码,总是需要:比较大的耐心以及灵活跳跃的思路。当然,如果辅助以一些调试手段,就会起到事半功倍的效果。php程序的分析,一般可以从php程序体和mysql数据库,这两个方面着手分析。

  • mysql方面,一般可以从慢查询角度分析,但不是本文的描述重点,具体可以参见文末链接。
  • php方面,在本文中,也不是从扩展角度来分析php堆栈,而只是利用php原生提供功能来分析源码。目标是要得到代码函数间的调用关系。

苏南大叔:未知php代码分析,堆栈打印函数总结 - php-debug-hero
未知php代码分析,堆栈打印函数总结(图3-1)

苏南大叔已经通过关键词定位到了关键的函数代码点。但是程序是通过什么样的顺序,执行到当前代码位置的呢?代码运行期间,有着什么样的函数调用关系呢?本文解决的就是这个问题。苏南大叔通过在关键点代码附近添加如下辅助代码,来进行分析。

方案一debug_backtrace()

print_r(debug_backtrace());

这个方案,必须有强大的信息过滤能力,因为返回结果中,似乎无用信息过多。其实只需要数组根元素下的数据即可。下面的链接,是个相关函数说明。大家可以看看。

苏南大叔:未知php代码分析,堆栈打印函数总结 - 375
未知php代码分析,堆栈打印函数总结(图3-2)

方案二,异常对象的方法getTraceAsString()

$e=new Exception;
var_dump($e->getTraceAsString());

苏南大叔:未知php代码分析,堆栈打印函数总结 - 376
未知php代码分析,堆栈打印函数总结(图3-3)

这个方案,其实有点剑走偏锋,不过,效果确实相当不错,结果简洁明了,推荐大家使用。

相关链接

总结

分析别人的代码,才能学习进步。别人好的思路,都要包容兼收。对吧?好文章也是,想知道苏南大叔的php相关好文章好思路嘛?点击下面这个链接,就可以知道了。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    trace