什么是 PHP 中的 ::class?
PHP 中的表示法是什么?::class
由于语法的性质,快速的Google搜索不会返回任何内容。
冒号类
使用这种符号有什么好处?
protected $commands = [
\App\Console\Commands\Inspire::class,
];
PHP 中的表示法是什么?::class
由于语法的性质,快速的Google搜索不会返回任何内容。
冒号类
使用这种符号有什么好处?
protected $commands = [
\App\Console\Commands\Inspire::class,
];
SomeClass::class
将返回包含命名空间的完全限定名称。此功能是在 PHP 5.5 中实现的。SomeClass
文档:http://php.net/manual/en/migration55.new-features.php#migration55.new-features.class-name
由于2个原因,它非常有用。
use
例如:
use \App\Console\Commands\Inspire;
//...
protected $commands = [
Inspire::class, // Equivalent to "App\Console\Commands\Inspire"
];
更新 :
此功能对于后期静态绑定也很有用。
您可以使用该功能来获取父类内派生类的名称,而不是使用魔术常量。例如:__CLASS__
static::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
class
是 special,由 php 提供,用于获取完全限定的类名。
请参阅 http://php.net/manual/en/migration55.new-features.php#migration55.new-features.class-name。
<?php
class foo {
const test = 'foobar!';
}
echo foo::test; // print foobar!