Laravel - 引用课程

时间:2017-11-20 06:57:22

标签: php laravel coding-style

为了学习它是什么样的野兽,我上周一直在为Laravel阅读很多文档。

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

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

注意'App\User'

从这里采取https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations

我想知道他们为什么不把它作为App\User::class引用?

在这种情况下,输入和支持代码会更容易,因为按Ctrl + B后按类更容易。此外,重构更容易,并且更难犯错,因为IDE会警告您,如果您输入错误,该类不存在。

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

你看到了吗?

2 个答案:

答案 0 :(得分:1)

实际字符串用于说明它是相关模型的完整类名。您可以非常轻松地使用Model::class。文档中的示例是明确的,并且从读取该参数的人那里删除任何可能的猜测工作。

答案 1 :(得分:1)

从PHP doc Class Constants获取:

  

从PHP 5.5.0开始,special :: class常量可用,并允许在编译时完全限定类名解析,这对于命名空间类很有用:

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

就个人而言,为了避免使用字符串排版错误,我更喜欢使用类常量分辨率,而且我也可以轻松地检查来自IDE的用法。

此外,我不必记住我正在使用的类的命名空间。

除了这些好处之外,我没有看到任何差异,除非有性能差异,显然似乎并非如此。