類名::class可以獲取到類名稱字符串 , 當使用命名空間時可以獲取到完整名稱
<?php namespace NS { class ClassName { } echo ClassName::class; } ?>
可以得到
NS\ClassName
使用 ::class 解析類名操作會在底層編譯時進行。這意味着在執行該操作時,類還沒有被加載。 因此,即使要調用的類不存在,類名也會被展示。在此種場景下,並不會發生錯誤。
自 PHP 8.0.0 起,::class 關鍵字也可以對象上使用。 與上述情況不同,此時解析將會在運行時進行。此操作的運行結果和 get_class() 函數一致。
<?php namespace NS { class ClassName { } } $c = new ClassName(); print $c::class; ?>
輸出
NS\ClassName
與get_class($c)的結果一樣