PHP:我怎么知道函数的调用者?
答
我不知道你为什么要这样,但让我提出一个巨大的红色旗帜 - 写代码,其行为取决于来电者产生非常非模块化,难以调试和彻头彻尾的疯狂计划。这就是说,如果你有一个正当的理由,像...
function caller()
{
$stackTrace = debug_backtrace();
if (count ($stackTrace) < 1)
return "None";
else if (count ($stackTrace) < 2)
return "Global scope " . $stackTrace[count($stackTrace)]["file"];
else
return $stackTrace[count($stackTrace) - 1]["function"];
}
(这被注销的袖口,所以可能不会在所有情况下的鲁棒性。见http://uk3.php.net/manual/en/function.debug-backtrace.php更多)
答
我怎么知道在PHP函数的调用者?
将它传递给被调用者。这是最正常的方法。
+0
你是用“(这个)”还是其他类型? – ubiquibacon 2010-07-25 21:11:02
+1
@用'$ this','__FUNCTION__','__CLASS__',不管你在被调用者需要什么,只要不用'debug_backtrace'去做,除非你需要回溯。 – Gordon 2010-07-25 21:12:50
[PHP:朋友类和非语言调用者函数/类]的可能重复(http://*.com/questions/2528671/php-friend-classes-and-ungreedy-caller-function-class)和[a情侣](http://*.com/search?q=debug_backtrace+php)。您还应该通读[生产代码中的PHP debug_backtrace?](http://*.com/questions/346703/php-debug-backtrace-in-production-code) – Gordon 2010-07-25 20:56:29