::class 常量PHP 5.5 引入類級別常量 ClassName::class,可取得類別的完整限定名稱(含命名空間),編譯期解析,不需實例化物件。
<?php
namespace Vendor\Package;
class Foo { }
var_dump(Foo::class); // 輸出: string(18) "Vendor\Package\Foo"
?>
::class?雖然 __NAMESPACE__ . '\Foo' 也能達到類似效果,但在使用 use 導入別名時,::class 更優雅且不易出錯:
<?php
use Vendor\Package\Foo;
use Vendor\Package\Bar;
class FooTest extends PHPUnit_Framework_TestCase {
public function testBarCanBeProcessed() {
// 使用 ::class 取得完整類別名,避免硬編碼字串
$bar = $this->getMock(Bar::class);
$foo = new Foo();
$foo->process($bar);
}
}
?>
use 別名:即使類別有別名,::class 仍回傳原始完整名稱。