MyClass::class - 获取MyClass的字符串表示

4
双冒号(::)是范围解析运算符。它用于访问受保护的方法和属性(以及常量)。
然而,我已经看到使用::class来返回类的字符串表示形式。就像这样:
namespace App;
class MyClass
{

}

var_dump(MyClass::class); # string(11) "App\MyClass"

我已经广泛搜索了与此行为相关的文档。
上面的代码是否也使用作用域解析运算符,还是完全不同的东西?如果是,那它的名称是什么?
如果它使用SRO,这是否意味着PHP在幕后放置了一个静态属性"class"?(尽管我无法覆盖此静态属性)
2个回答

3
这是PHP5.5中的新功能,详情请见:http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class。它主要用于获取完整的类名。与静态变量不同(没有前导$),它是使用class关键字的语言特性。根据php.net上的注释:使用::class进行类名解析是在编译时进行的转换。这意味着在创建类名字符串时尚未发生自动加载。因此,即使类不存在,也会展开类名。在这种情况下不会发出错误。

0

::class 运算符是 PHP 5.5 中引入的,它返回一个完全限定类名的字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接