[英]In php, is there any way to determine whether ::class was used when generating a string?
以下两个 return 语句将返回相同的字符串:
getClassName(): string
{
return MyClassName::class; // returns 'MyClassName'
return 'MyClassName'; // returns 'MyClassName'
}
我们也有调用这个方法的代码。
$className = getClassName();
在我们调用这个方法的代码中,有没有办法判断::class
是否被用来生成字符串?
我们使用的 IDE 能够检测::class
何时被使用,我们希望在编译时以某种方式在我们的代码中使用这个逻辑。
IDE 可以查看源代码并查看您使用的语法。 他们使用它来提供提示、交叉引用以及他们在您编辑时所做的所有其他好事。
但是一旦代码被编译和运行,大部分信息都会被丢弃。 值没有任何关于它们是如何计算的信息——一个字符串只是一堆字符。 有一些反射功能允许您访问调用堆栈以查看调用了哪些函数,因为这需要在内存中实现返回,但数据不会跟踪值的来源。
所以没有内置的方法来获取您正在寻找的信息。 如果您需要对此进行跟踪,则必须在应用程序代码本身中实现它。
getClassName(): array
{
return ['source' => '::class', 'value' => MyClassName::class];
return ['source' => 'string', 'value' => 'MyClassName'];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.