Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定PHP中的调用范围_Php_Oop - Fatal编程技术网

确定PHP中的调用范围

确定PHP中的调用范围,php,oop,Php,Oop,有没有办法确定从函数本身内部调用函数的范围?(或方法;我将在文章的其余部分中使用函数来表示这两种方法之一。) 我不希望的是必须将\uuuuu FILE\uuuuuuuu或\uuuuuuu CLASS\uuuuuuuu常量传递到函数中。这些信息可以在堆栈跟踪中获得,所以我知道它在某个地方浮动,但我想知道如何在运行时内省它而不引发异常 如果解决方案有任何性能方面的特殊性,我也想了解一下 我对两个用例感兴趣 确定哪个文件/行/函数调用了我的函数 确定发起函数调用的类类型 基本上我想要的是: class

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

我不希望的是必须将
\uuuuu FILE\uuuuuuuu
\uuuuuuu CLASS\uuuuuuuu
常量传递到函数中。这些信息可以在堆栈跟踪中获得,所以我知道它在某个地方浮动,但我想知道如何在运行时内省它而不引发异常

如果解决方案有任何性能方面的特殊性,我也想了解一下

我对两个用例感兴趣

  • 确定哪个文件/行/函数调用了我的函数
  • 确定发起函数调用的类类型
  • 基本上我想要的是:

    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
    
    这是不可能的

    结果数组提供从入口点到调用
    debug\u backtrace

    的调用跟踪


    结果数组提供从入口点到调用
    debug\u backtrace

    的调用跟踪,实际上
    debug\u backtrace
    正在调试,而不是获取调用方范围。它可以做到这一点,但它绝对不是控制应用程序的函数flow@Gordon. 对。它用于检索调试信息。因此是前缀。我不鼓励使用它(与异常的开销相同),但它可以用于流控制。@Gordon是的,这就是我试图做的区别;谢谢。实际上,
    debug\u backtrace
    正在调试,而不是获取调用方范围。它可以做到这一点,但它绝对不是控制应用程序的函数flow@Gordon. 对。它用于检索调试信息。因此是前缀。我不鼓励使用它(与异常的开销相同),但它可以用于流控制。@Gordon是的,这就是我试图做的区别;谢谢。这个问题可能会有重复的问题,所以应该有更多的重复。如果你非常想这样做,可以滥用
    debug\u backtrace
    ,但总的来说,拥有这种需求是一种设计的味道。在PHP中实现这样一个功能已经在PHP.internals上讨论过,但也被拒绝:@Gordon感谢阅读材料。这个问题可能会重复,因此应该有更多的重复。如果你非常想这样做,可以滥用
    debug\u backtrace
    ,但总的来说,拥有这种需求是一种设计的味道。在PHP中实现这样一个特性已经在PHP.internals上讨论过,但也被拒绝:@Gordon感谢阅读材料。