在laravel中,`::class`是一个用于获取类的完全限定名称(fully qualified class name)的特殊语法。它返回一个字符串,包含类的命名空间和类名。这在定义类别名(alias)或进行反射操作时非常有用。

10 浏览
0 Comments

在laravel中,`::class`是一个用于获取类的完全限定名称(fully qualified class name)的特殊语法。它返回一个字符串,包含类的命名空间和类名。这在定义类别名(alias)或进行反射操作时非常有用。

对于我英语表达能力有限表示抱歉!

我知道ClassName::Class会返回带有命名空间的类名。

但为什么在laravel中当类名写有命名空间时会使用它呢?

例如:

\App\Http\Middleware\TrimStrings::class

我对此感到困惑!

有人能告诉我::Class到底是什么意思吗?

0
0 Comments

问题:what is ::class php in laravel?

原因:使用::class语法可以声明一个类,而无需将其作为字符串传递。当IDE更新时,它将有助于自动填充命名空间,而这是无法通过字符串实现的。

解决方法:在PHP 5.5及以上版本中,class关键字还用于类名解析。通过使用ClassName::class,可以获得一个包含ClassName类的完全限定名的字符串。这在使用命名空间的类时特别有用。

示例:

namespace NS {
    class ClassName {
    }
    echo ClassName::class;
}

以上示例将输出:

NS\ClassName

注意:

使用::class进行类名解析是在编译时进行的转换。这意味着在创建类名字符串时尚未发生自动加载。因此,即使类不存在,类名也会被展开。在这种情况下不会报错。

参考链接:Php Manual (http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class)

0