以下兩個 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 關注
- 117 瀏覽
添加回答
舉報
0/150
提交
取消