Laravel - 引用 class

Laravel - referencing the class

上周我一直在阅读 Laravel 的大量文档,以便了解它是什么样的野兽。

我注意到一件事,每当有人引用一些 class 时,他都会将其引用为字符串,例如:

  public function user()
  {
        return $this->belongsTo('App\User');
  }

关注'App\User'

取自此处https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations

我想知道他们为什么不将其称为 App\User::class

在这种情况下,键入和支持代码会更容易,因为稍后更容易按照 class 按 Ctrl+B。重构也更容易并且更难犯错误,因为 IDE 会警告你如果你打错了 class 不存在。

我认为没有理由将 class 用户引用为 'App\User' 而不是 App\User::class

你看到了吗?

实际字符串用于说明它是相关模型的完整class名称。您可以非常轻松地使用 Model::class。文档中的示例是明确的,并消除了阅读该论点的人的任何潜在猜测工作。

摘自 PHP 文档 Class Constants:

The special ::class constant are available as of PHP 5.5.0, and allows for fully qualified class name resolution at compile, this is useful for namespaced classes:

这意味着根据您给出的示例,使用 User::class 将在运行时解析为 'App\User'。所以选择权在你。

就个人而言,为了避免字符串的印刷错误,我更喜欢使用 class 常量解析,而且我可以很容易地从我的 IDE.[=14 中检查用法=]

我也不必记住我正在使用的 class 的命名空间。

除了这些好处,我看不出有什么区别,除非有明显的性能差异。