【发布时间】:2015-12-03 14:07:41
【问题描述】:
当我阅读用 Laravel 框架编写的代码时,我看到了很多 ClassName::class 的用法。修饰符::class是什么意思?这是 Laravel 还是 PHP 的特性?我已经搜索过,但找不到文档。
【问题讨论】:
-
This 链接将您带到 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
【讨论】:
请参考to this
::class
Since PHP 5.5, the class keyword is also used for class name resolution.
【讨论】: