加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – MyClass :: class – 获取MyClass的字符串表示形式

发布时间:2020-12-13 16:59:36 所属栏目:PHP教程 来源:网络整理
导读:双冒号(::)是 Scope Resolution Operator. 这用于访问受保护的方法和属性(和常量). 但是,我已经看到使用:: class来返回类的字符串表示形式.像这样: namespace App;class MyClass{}var_dump(MyClass::class); # string(11) "AppMyClass" 我已经搜索了很多
双冒号(::)是 Scope Resolution Operator.

这用于访问受保护的方法和属性(和常量).

但是,我已经看到使用:: class来返回类的字符串表示形式.像这样:

namespace App;
class MyClass
{

}

var_dump(MyClass::class); # string(11) "AppMyClass"

我已经搜索了很多关于这种行为的文档.

以上代码是否也使用范围解析运算符或者这是完全不同的东西?如果是这样,它的名字是什么?

如果它正在使用SRO,那是否意味着PHP在幕后放置了一个静态属性“class”? (虽然我无法覆盖这个静态属性)

解决方法

这是PHP5.5中的一个新功能,请参阅: http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class

这基本上是为了获得完整的班级名称.它也不是静态变量(请参阅前面的$),而是使用class关键字的语言功能.根据php.net上的说明:

The class name resolution using ::class is a compile time transformation. That means at the time the class name string is created no autoloading has happened yet. As a consequence,class names are expanded even if the class does not exist. No error is issued in that case.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读