【问题标题】:Fully qualified name should we use ::class我们应该使用::class 的完全限定名称
【发布时间】: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


【解决方案1】:

答案似乎是:

除了与 php::class 名称解析器。

【讨论】:

    猜你喜欢
    • 2014-10-09
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    相关资源
    最近更新 更多