簡體   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