gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:17:40 24 4
gpt4 key购买 nike

双冒号 (::) 是 Scope Resolution Operator .

这用于访问 protected 方法和属性(和常量)。

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

namespace App;
class MyClass
{

}

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

我广泛搜索了有关此行为的文档。

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

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

最佳答案

这是 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.

关于php - MyClass::class - 获取 MyClass 的字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35378270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com