PHP里如何获取函数的调用者名称

时间:2022-06-01 18:04:26
请问,PHP里如何获取一个函数是被哪个函数调用的?
例如:
function a(){
    c();
}
function b(){
    c();
}
function c(){
}
调用:b();,请问我在c()里面要用什么函数或方法来获得调用者是b函数

注:在c()函数传调用者函数名称的方式不是我想要的。
高手请指教...

5 个解决方案

#1


全局变量或者传参比较简单就能实现,别的方法不懂了
ps:lz是要实现什么啊,传参不符合需求么?

#2




function a() {
b();
}

function b() {
$backtrace = debug_backtrace();
array_shift($backtrace);
var_dump($backtrace);
}

a();

#3


用debug_backtrace函数,具体看看PHP手册上的例子
http://www.php.net/manual/en/function.debug-backtrace.php
=========================================================
Example #1 debug_backtrace() example

<?php
// filename: /tmp/a.php

function a_test($str)
{
    echo "\nHi: $str";
    var_dump(debug_backtrace());
}

a_test('friend');
?>

<?php
// filename: /tmp/b.php
include_once '/tmp/a.php';
?> 

Results similar to the following when executing /tmp/b.php: 

Hi: friend
array(2) {
[0]=>
array(4) {
    ["file"] => string(10) "/tmp/a.php"
    ["line"] => int(10)
    ["function"] => string(6) "a_test"  <= 这里
    ["args"]=>
    array(1) {
      [0] => &string(6) "friend"
    }
}
[1]=>
array(4) {
    ["file"] => string(10) "/tmp/b.php"
    ["line"] => int(2)
    ["args"] =>
    array(1) {
      [0] => string(10) "/tmp/a.php"
    }
    ["function"] => string(12) "include_once"
  }
}

#4


不错,楼上两位的答案正是我想要的,谢谢...

#5


学习了
引用 3 楼 cunningboy 的回复:
用debug_backtrace函数,具体看看PHP手册上的例子
http://www.php.net/manual/en/function.debug-backtrace.php
=========================================================
Example #1 debug_backtrace() example


PHP co……

#1


全局变量或者传参比较简单就能实现,别的方法不懂了
ps:lz是要实现什么啊,传参不符合需求么?

#2




function a() {
b();
}

function b() {
$backtrace = debug_backtrace();
array_shift($backtrace);
var_dump($backtrace);
}

a();

#3


用debug_backtrace函数,具体看看PHP手册上的例子
http://www.php.net/manual/en/function.debug-backtrace.php
=========================================================
Example #1 debug_backtrace() example

<?php
// filename: /tmp/a.php

function a_test($str)
{
    echo "\nHi: $str";
    var_dump(debug_backtrace());
}

a_test('friend');
?>

<?php
// filename: /tmp/b.php
include_once '/tmp/a.php';
?> 

Results similar to the following when executing /tmp/b.php: 

Hi: friend
array(2) {
[0]=>
array(4) {
    ["file"] => string(10) "/tmp/a.php"
    ["line"] => int(10)
    ["function"] => string(6) "a_test"  <= 这里
    ["args"]=>
    array(1) {
      [0] => &string(6) "friend"
    }
}
[1]=>
array(4) {
    ["file"] => string(10) "/tmp/b.php"
    ["line"] => int(2)
    ["args"] =>
    array(1) {
      [0] => string(10) "/tmp/a.php"
    }
    ["function"] => string(12) "include_once"
  }
}

#4


不错,楼上两位的答案正是我想要的,谢谢...

#5


学习了
引用 3 楼 cunningboy 的回复:
用debug_backtrace函数,具体看看PHP手册上的例子
http://www.php.net/manual/en/function.debug-backtrace.php
=========================================================
Example #1 debug_backtrace() example


PHP co……