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 的命名空间。
除了这些好处,我看不出有什么区别,除非有明显的性能差异。
上周我一直在阅读 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 的命名空间。
除了这些好处,我看不出有什么区别,除非有明显的性能差异。