为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 5中的调用者函数?

PHP 5中的调用者函数?

PHP
红糖糍粑 2019-07-26 15:14:44
PHP 5中的调用者函数?是否有PHP函数来查找给定函数中调用方函数的名称?
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

看见调试回溯-这可以将你的呼叫堆栈一路追踪到顶部。

以下是如何让你的来电者:

$trace = debug_backtrace();$caller = $trace[1];echo "Called by {$caller['function']}";if (isset($caller['class']))
    echo " in {$caller['class']}";


查看完整回答
反对 回复 2019-07-27
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

XDEBUG提供了一些不错的功能。

<?php  Class MyClass
  {
    function __construct(){
        $this->callee();
    }
    function callee() {
        echo sprintf("callee() called @ %s: %s from %s::%s",
            xdebug_call_file(),
            xdebug_call_line(),
            xdebug_call_class(),
            xdebug_call_function()
        );
    }
  }
  $rollDebug = new MyClass();?>

将返回跟踪

callee() called @ /var/www/xd.php: 16 from MyClass::__construct

要在ubuntu上安装xdeb,最好的方法是

sudo aptitude install php5-xdebug

您可能需要先安装php5-dev。

sudo aptitude install php5-dev

更多信息



查看完整回答
反对 回复 2019-07-27
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

这已经很晚了,但是我想分享一下函数,它将给出调用当前函数的名称。

public function getCallingFunctionName($completeTrace=false)
    {
        $trace=debug_backtrace();
        if($completeTrace)
        {
            $str = '';
            foreach($trace as $caller)
            {
                $str .= " -- Called by {$caller['function']}";
                if (isset($caller['class']))
                    $str .= " From Class {$caller['class']}";
            }
        }
        else
        {
            $caller=$trace[2];
            $str = "Called by {$caller['function']}";
            if (isset($caller['class']))
                $str .= " From Class {$caller['class']}";
        }
        return $str;
    }

我希望这将是有用的。



查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 585 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信