[英]ClassName::class vs 'ClassName' in PHP
在我的一个项目中,我们有一个函数来验证对象,例如:
if( true == valObj( $someObj, 'SomeClass' ) ) {
//Do some work;
}
在使用此功能时,我认为可以这样写:
if( true == valObj( $someObj, SomeClass::class ) ) {
//Do some work;
}
现在我只想知道哪种方法更好,为什么? 还是一样?
::class
表示法通常更好,因为它可以更容易地找到用法并进行重构:如果使用类似PHPStorm的IDE,则可以轻松地重命名类,并且它将查找并将OldClassName::class
所有用法更新为NewClassname::class
OldClassName::class
NewClassname::class
。 硬编码的字符串变体不是这种情况。
如果您使用命名空间,则使用此符号也可以减少内联字符。
如果您正在运行支持此符号的PHP版本,请使用它:)
SomeClass::class
返回完整的名称空间,包括类名称。 如果您使用字符串符号,则必须自己添加名称空间(如果有)。
编辑:
选择哪种表示形式都没关系,尽管我个人更喜欢使用字符串表示法,因为它可以在滚动代码时直接向您显示该类所在的名称空间。
来自php.net的特殊::class
常量自PHP 5.5.0起可用,并允许在编译时进行完全限定的类名解析,这对于命名空间类很有用。
<?php
namespace foo {
class bar {
}
echo bar::class; // foo\bar
}
?>
这也是一个魔术常数。 看看http://php.net/manual/en/language.constants.predefined.php
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.