繁体   English   中英

在php中,有没有什么办法可以判断生成字符串时是否使用了::class?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM