设置关系时,User :: class和App \ User有什么区别?

Ron*_*nit 3 php namespaces eloquent laravel-5

return $this->belongsTo(User::class);
Run Code Online (Sandbox Code Playgroud)

return $this->belongsTo(App\User);
Run Code Online (Sandbox Code Playgroud)

上面两个语句有什么区别?

sep*_*ehr 5

实际上,您的第二个示例无效。它必须是一个字符串:

return $this->belongsTo('App\User');
Run Code Online (Sandbox Code Playgroud)

假设它是一个字符串,则这两个变体之间没有区别。

PHP 5.5的类解析::class)返回()的完全限定名称{Namespace}\ClassName。您将在第一个示例中使用它。但是在第二个示例中,您将App\User手动传递类FQN(),而不使用类解析。

重要说明是use,在可以对类使用类解析之前,应在上下文中使用类(如果没有,则在语句中使用该语句)。但是在第二种方法中,您不需要类可用,只需将FQN作为字符串传递即可。

对于上下文中可用的长类FQN,您宁愿使用类解析,而不是手动传递它。

use Illuminate\Database\Eloquent\Model;

echo Model::class;
// Outputs: Illuminate\Database\Eloquent\Model;
Run Code Online (Sandbox Code Playgroud)