Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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 - Fatal编程技术网

Php 如何在没有调试回溯的情况下在_构造中调用函数名

Php 如何在没有调试回溯的情况下在_构造中调用函数名,php,Php,如何在类构造函数中获取调用方方法名,get_called_class()为我提供了一个实例化的扩展类的名称,但如何获取该类中调用的方法的名称? 我需要将此用于生产状态,因此debug_backtrace()不是一个好的解决方案 你为什么需要这个?如果您对项目和标准中的其他编码人员有任何考虑,请找到一个不需要构造函数知道如何调用它的解决方案。如果所有其他解决方案都失败,请定义一个静态工厂方法,并将构造函数设置为私有,以便更好地控制实例化。如果您不想使用debug\u backtrace()函数,也

如何在类构造函数中获取调用方方法名,get_called_class()为我提供了一个实例化的扩展类的名称,但如何获取该类中调用的方法的名称?
我需要将此用于生产状态,因此debug_backtrace()不是一个好的解决方案

你为什么需要这个?如果您对项目和标准中的其他编码人员有任何考虑,请找到一个不需要构造函数知道如何调用它的解决方案。如果所有其他解决方案都失败,请定义一个静态工厂方法,并将构造函数设置为私有,以便更好地控制实例化。

如果您不想使用debug\u backtrace()函数,也可以抛出并捕获异常,以获取回溯

但这也很难看。。。无论如何:

try
{
    throw new Exception();
}
catch( Exception $e )
{
    print_r( $e->getTrace() );
}
我不知道你为什么需要电话。也许您可以使用不同的逻辑来解决此问题。
这应该比回溯好

编辑

不需要抛出异常。对不起,这部分内容。
因此,您可以简单地使用:

$e = new Exception();
print_r( $e->getTrace() );

但是再一次,你不应该使用这个

如果没有
debug\u backtrace()。您仍然可以为此创建自己的函数。示例来自:


除了缓慢/难看的debug_回溯,或者将名称作为参数传递给构造函数之外,没有自动执行此操作的方法。。。。但是你不应该真的把这些类型的依赖项构建到你的类中。

不能简单地使用:
$e=newexception$e->getTrace()
?是否需要抛出它,以获得跟踪?我想是的,但我刚刚测试过,不,它不需要抛出。
function get_caller_method() 
{ 
    $traces = debug_backtrace(); 

    if (isset($traces[2])) 
    { 
        return $traces[2]['function']; 
    } 

    return null; 
}