<namespace> :: class是什么意思?

时间:2016-06-16 01:49:00

标签: php cakephp

CakePHP Plugin documentation中,有以下代码行:$validator->provider('upload', \Josegonzalez\Upload\Validation\DefaultValidation::class);

\Josegonzalez\Upload\Validation\DefaultValidation是命名空间,但我不理解::class。有人可以解释一下吗?我在PHP文档中找不到任何内容。

1 个答案:

答案 0 :(得分:2)

class常量只是将类的全名(带命名空间)作为字符串返回。因此,不是将字符串作为字符串传递给需要它的某个方法,而是以PHP方式传递它。它看起来不错,例如:

$validator->provider('upload',\Josegonzalez\Upload\Validation\DefaultValidation::class);

$validator->provider('upload', '\Josegonzalez\Upload\Validation\DefaultValidation');

两者相同

这样做的另一个好处是,如果您需要在单个文件中多次使用完整的类名...请将多个方法调用作为参数说明。你可以简单地在顶部和顶部使用它。那么只有classname将返回带有命名空间的全名。像这样:

use \Josegonzalez\Upload\Validation\DefaultValidation;

$validator->provider('upload', DefaultValidation::class);

//you can use it on other places as well, if required.
$someOtherClass->someOtherMethod(DefaultValidation::class);

因此,简而言之,它减少了您需要输入的字符数,并使您的代码看起来更清晰。