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