确定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感谢阅读材料。