什么是 PHP 中的 ::class
表示法?
由于语法的性质,快速的 Google 搜索不会返回任何内容。
冒号冒号类
使用这种表示法有什么好处?
protected $commands = [
\App\Console\Commands\Inspire::class,
];
最佳答案
SomeClass::class
将返回 SomeClass
的完全限定名称,包括命名空间。此功能在 PHP 5.5 中实现。
文档:http://php.net/manual/en/migration55.new-features.php#migration55.new-features.class-name
它非常有用有两个原因。
- 您不必再将类名存储在字符串中。因此,许多 IDE 在您重构代码时可以检索这些类名
- 您可以使用
use
关键字来解析您的类,而无需编写完整的类名。
例如:
use \App\Console\Commands\Inspire;
//...
protected $commands = [
Inspire::class, // Equivalent to "App\Console\Commands\Inspire"
];
更新:
此功能对 Late Static Binding 也很有用.
您可以使用 static::class
功能来获取父类中派生类的名称,而不是使用 __CLASS__
魔术常量。例如:
class A {
public function getClassName(){
return __CLASS__;
}
public function getRealClassName() {
return static::class;
}
}
class B extends A {}
$a = new A;
$b = new B;
echo $a->getClassName(); // A
echo $a->getRealClassName(); // A
echo $b->getClassName(); // A
echo $b->getRealClassName(); // B
关于php - PHP 中的::class 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30770148/