php - 在php中,有没有办法确定生成字符串时是否使用了 ::class ?
问题描述
以下两个 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'];
}
推荐阅读
- terminal - 当我尝试连接终端时出现 EPIRequestException
- node.js - 使用临时消息不工作的松弛回复 response_url
- python - 即使安装了依赖项,app.py 上的 Flask 导入错误
- html - Colgroup 和 Col 在桌面上不可见
- javascript - 如何编写函数以便在未定义参数时省略代码?
- internet-explorer - Internet Explorer 是否有超时设置?
- javascript - mousedown 事件未触发 - 带有 vue 的 fabric.js
- r - 如何在 R 中将 2 列转换为 2 行?
- c - pipe() 数据不会传输到子进程
- kotlin - Kotlin,VSCode 中所有内容的未解决参考