ClassName::class在PHP中是什么意思?


What does ClassName::class mean in PHP?

当我阅读用Laravel框架编写的代码时,我看到了很多ClassName::class的使用。修饰语::class是什么意思?这是Laravel还是PHP的特性?

从PHP 5.5开始,class关键字也用于类名解析。您可以使用ClassName::class获得包含ClassName类的完全限定名的字符串。这对于命名空间类尤其有用。

例如

namespace MyProject;
class Alpha{ }
namespace MyOtherProject;
class Beta{ }
echo Alpha::class; // displays: MyProject'Alpha
echo Beta::class; // displays: MyOtherProject'Beta

它只返回类名和命名空间!从PHP 5.5开始,class关键字也用于类名解析。您可以使用ClassName::class获得包含ClassName类的完全限定名的字符串。这对于命名空间类尤其有用。

namespace NS {
    class ClassName {
    }
    echo ClassName::class;
}
上面的示例将输出:
NS'ClassName

请参考本

::class
Since PHP 5.5, the class keyword is also used for class name resolution.