在CakePHP Plugin documentation中,有以下代码行:$validator->provider('upload', \Josegonzalez\Upload\Validation\DefaultValidation::class);
\Josegonzalez\Upload\Validation\DefaultValidation
是命名空间,但我不理解::class
。有人可以解释一下吗?我在PHP文档中找不到任何内容。
答案 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);
因此,简而言之,它减少了您需要输入的字符数,并使您的代码看起来更清晰。