日期:2014-05-17  浏览次数:20575 次

PHP函数没有找到被调用代码,但运行时执行了(PHP初学者求助)
问一下我遇到的这个奇怪的问题,我正在研究elastix的源代码,是一个软交换系统的web访问界面,
然后我想根据其操作数据库往回找,找到怎么从最初的用户操作(按下哪个按钮)。

问题是,我找到了操作数据库的函数,并且只有这一个函数,没有别的函数执行这个DB操作了,
但是,没有任何一个PHP调用了这个函数。

而这个函数的确是执行了(我注释掉它之后,从画面上点击提交,DB里没有插入数据)。

这让我极其郁闷,
难道PHP里的类的函数,可以被其他非PHP的东西调用?
要不然它是怎么被调用的?
它只是一个普通的函数。

贴出函数来:
class core_conf {

  function core_devices_addsip($account) {
global $db;
global $currentFile;

......

$compiled = $db->prepare('INSERT INTO sip (id, keyword, data, flags) values (?,?,?,?)');
$result = $db->executeMultiple($compiled,$sipfields);
if(DB::IsError($result)) {
die_freepbx($result->getDebugInfo()."<br><br>".'error adding to SIP table');
}
  }
}

我刚接触PHP,只是了解点儿皮毛,这问题完全把我搞蒙了。

------解决方案--------------------
你是指 core_devices_addsip ???
在项目的所有文件中搜索 core_devices_addsip 串

你也可以在这个方法里写上
print_r(debug_print_backtrace());
运行一下就可以观察到都是谁在调用它
------解决方案--------------------
或许是你找错了目标

跟踪程序的运行要自底向上
即从界面出发,一层层的剥离。为此你需要写一些简单的桩页面

PHP code
function f1() {
  f2();
}
function f2() {
  debug_print_backtrace();
}
f1();