我们应该使用完全限定名称 ::class
Fully qualified name should we use ::class
对于 Symfony,我习惯于使用 class 名称解析器 ::class
(因为 php5.5):
use AppBundle\Entity\Product;
// ...
$resolver->setDefaults(array(
'data_class' => Product::class
));
而不是 FQN 字符串:
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Product'
));
我这样做是为了提高可读性,因为在一些智能 IDE 中进行内省很方便。
但是,我在官方文档中看到的这种做法的例子并不多。所以我想知道这是因为兼容性问题 (< php5.5) 还是因为系统地导入我们需要引用的所有 classes 是不好的。
我的问题是:在我们需要引用 FQN 的任何地方使用 ::class
是一个好习惯吗?
答案好像是:
除了 php<5.5 的兼容性问题,没有什么可以阻止我们在任何需要的地方使用 ::class
名称解析器。
对于 Symfony,我习惯于使用 class 名称解析器 ::class
(因为 php5.5):
use AppBundle\Entity\Product;
// ...
$resolver->setDefaults(array(
'data_class' => Product::class
));
而不是 FQN 字符串:
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Product'
));
我这样做是为了提高可读性,因为在一些智能 IDE 中进行内省很方便。
但是,我在官方文档中看到的这种做法的例子并不多。所以我想知道这是因为兼容性问题 (< php5.5) 还是因为系统地导入我们需要引用的所有 classes 是不好的。
我的问题是:在我们需要引用 FQN 的任何地方使用 ::class
是一个好习惯吗?
答案好像是:
除了 php<5.5 的兼容性问题,没有什么可以阻止我们在任何需要的地方使用 ::class
名称解析器。