【问题标题】:Determine calling scope in PHP在 PHP 中确定调用范围
【发布时间】:2011-01-28 19:00:00
【问题描述】:

有没有办法确定从函数本身内部调用函数的范围? (或方法;我将在帖子的其余部分中使用函数来表示其中之一。)

我不想将__FILE____CLASS__ 常量传递给函数。此信息在堆栈跟踪等中可用,所以我知道它在某处浮动,但我想知道如何在运行时自省它而不抛出异常。

如果解决方案有任何性能特殊性,我也想知道这些。

有两个我感兴趣的用例。

  1. 确定哪个文件/行/函数调用了我的函数
  2. 确定发起函数调用的类类型

基本上我想要的是这样的:

class util
{
    public static function checkScope()
    {
        echo $magic_scope_stuff;
    }

    public static function blah()
    {
        util::checkScope();
    }
}

util::checkScope(); // main, line 14
util::blah(); // class util, line 9

【问题讨论】:

标签: php oop


【解决方案1】:

debug_backtrace()

生成的数组为您提供从入口点到调用 debug_backtrace 的调用跟踪。

【讨论】:

  • 实际上debug_backtrace 是调试而不是获取调用者范围。可以做到,但绝对不是控制应用流程的功能
  • @Gordon。真的。它用于检索调试信息。因此前缀。我不鼓励这样做(与异常的开销相同),但可以用于流量控制。
  • @Gordon 是的,这就是我试图做出的区分;谢谢。
猜你喜欢
  • 2011-03-22
  • 2014-03-02
  • 2023-03-16
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多