在php中,有没有办法确定生成字符串时是否使用了 ::class ?

以下两个 return 语句将返回相同的字符串:


getClassName(): string

{

    return MyClassName::class; // returns 'MyClassName'

    return 'MyClassName';      // returns 'MyClassName'

}

我们也有调用这个方法的代码。


$className = getClassName();

在我们调用这个方法的代码中,有没有什么方法可以判断是否::class使用了 生成字符串?


我们使用的 IDE 能够检测何时::class被使用,并且我们希望在编译时以某种方式在我们的代码中使用这个逻辑。


30秒到达战场
浏览 83回答 1
1回答

HUX布斯

IDE 可以查看源代码并查看您使用的语法。他们使用它来提供提示、交叉引用以及他们在您编辑时所做的所有其他好事。但是一旦代码被编译和运行,大部分信息就被丢弃了。值没有任何关于它们是如何计算的信息——一个字符串只是一堆字符。反射特性允许您访问调用堆栈以查看调用了哪些函数,因为这是在内存中实现返回所必需的,但数据不会跟踪值的来源。因此,没有内置方法可以获取您要查找的信息。如果您需要跟踪这一点,则必须在应用程序代码本身中实现它。getClassName(): array{    return ['source' => '::class', 'value' => MyClassName::class];    return ['source' => 'string', 'value' => 'MyClassName'];}
打开App,查看更多内容
随时随地看视频慕课网APP