Php 在Laravel中传递参数的最佳方式是什么:关系(方法),以及其中的区别是什么

Php 在Laravel中传递参数的最佳方式是什么:关系(方法),以及其中的区别是什么,php,laravel,eloquent,Php,Laravel,Eloquent,实际上我不知道这两种方法有什么不同 Laravel官方文档使用以下方法声明关系 class User extends Model { public function phone() { return $this->hasOne('App\Phone'); // HERE (App\Phone) Parameter } } 大多数教程和专家(即使是在拉拉康的)都使用下面的方法 class User extends Model { publi

实际上我不知道这两种方法有什么不同

Laravel官方文档使用以下方法声明关系

class User extends Model
{
    public function phone()
    {
        return $this->hasOne('App\Phone'); // HERE (App\Phone) Parameter 
    }
}
大多数教程和专家(即使是在拉拉康的)都使用下面的方法

class User extends Model
{
    public function phone()
    {
        return $this->hasOne(Phone::class); // HERE (Phone::class) Parameter 
    }
}
简言之,两者的区别是什么,哪一种比较方便

return $this->hasOne(Phone::class); // Method one
/// VS 
return $this->hasOne('App\Phone'); // Method Two

它们都是相同的,但是
Phone::class
是新语法
假设您想将您的
手机
类移动到另一个文件夹,您必须找到每个
'App\Phone'
,并将其重命名为
New\Directory\Phone
,但当您使用
Phone::class
时,您不必担心这一点

由于PHP5.5,class关键字用于类名解析。这意味着它返回完全限定的类名。当您有名称空间时,这非常有用,因为名称空间是返回名称的一部分

使用::class关键字是一种方法。首先是因为您编写的代码更少,其次,使用IDE可以帮助您更快地找到类

但它们基本上是一样的


你可以找到更多关于这方面的信息

这是否回答了你的问题。此外,您应该始终更喜欢
::class
方法,因为它更干净,并且与IDE的重构功能配合得很好。两者都是相同的,如果转储(Phone::class),您将看到“App\Phone”,如果类的名称空间较长,它也会更短,可读性更强。