【发布时间】:2016-10-05 19:21:14
【问题描述】:
在 Symfony 中,我养成了使用类名解析器 ::class(从 php5.5 开始)的习惯:
use AppBundle\Entity\Product;
// ...
$resolver->setDefaults(array(
'data_class' => Product::class
));
而不是 FQN 字符串:
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Product'
));
我这样做是为了便于阅读,并且因为它可以方便地在一些智能 IDE 中进行自省。
但是,我在官方文档中看到的这种做法的例子并不多。所以我想知道这是因为兼容性问题(
我的问题是:在需要引用 FQN 的任何地方使用 ::class 是一种好习惯吗?
【问题讨论】:
-
如你所说
is because of the compatibility concern (< php5.5) -
感谢您的评论。我不明白为什么我的问题应该被关闭和 -1
-
“良好实践”通常基于意见,但除了 Matteo 关于兼容性的评论(我同意他的观点),我认为您应该问自己为什么不使用它。我只看到使用类名解析器的优点,例如,如果您更改类的命名空间,您不必在代码中的任何地方都更改它(我在任何地方都使用
::class,而不是在实体中)。 -
我想说最佳实践是基于意见的,良好实践这里更多的是寻找关于实践的最终警告,除了兼容性问题我在问题中提到的。
-
我认为这也不值得-1,所以我做了+1。
标签: symfony php-5.5 fully-qualified-naming