以下两个 return 语句将返回相同的字符串:getClassName(): string{ return MyClassName::class; // returns 'MyClassName' return 'MyClassName'; // returns 'MyClassName'}我们也有调用这个方法的代码。$className = getClassName();在我们调用这个方法的代码中,有没有什么方法可以判断是否::class使用了 生成字符串?我们使用的 IDE 能够检测何时::class被使用,并且我们希望在编译时以某种方式在我们的代码中使用这个逻辑。
1 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
IDE 可以查看源代码并查看您使用的语法。他们使用它来提供提示、交叉引用以及他们在您编辑时所做的所有其他好事。
但是一旦代码被编译和运行,大部分信息就被丢弃了。值没有任何关于它们是如何计算的信息——一个字符串只是一堆字符。反射特性允许您访问调用堆栈以查看调用了哪些函数,因为这是在内存中实现返回所必需的,但数据不会跟踪值的来源。
因此,没有内置方法可以获取您要查找的信息。如果您需要跟踪这一点,则必须在应用程序代码本身中实现它。
getClassName(): array
{
return ['source' => '::class', 'value' => MyClassName::class];
return ['source' => 'string', 'value' => 'MyClassName'];
}
- 1 回答
- 0 关注
- 81 浏览
添加回答
举报
0/150
提交
取消