2
return $this->belongsTo(User::class);
VS設置關係時,User :: class和App User有什麼區別?
return $this->belongsTo(App\User);
是什麼上述兩個語句之間的區別?
return $this->belongsTo(User::class);
VS設置關係時,User :: class和App User有什麼區別?
return $this->belongsTo(App\User);
是什麼上述兩個語句之間的區別?
其實,你的第二個例子是無效的。它需要是一個字符串:
return $this->belongsTo('App\User');
假設它是一個字符串,這兩個變體之間沒有區別。
PHP 5.5的class resolution(::class
)返回該類的完全限定名稱({Namespace}\ClassName
)。你在第一個例子中使用它。但在第二個示例中,您將手動傳遞類FQN(App\User
),而不使用類解析。
重要的注意事項是該類應在上下文中可用(使用use
語句,如果不在當前名稱空間中),然後才能對其使用類解析。但在第二種方法中,您不需要該類可用,只需將FQN作爲字符串傳遞即可。
對於在上下文中可用的長類FQN,您更喜歡使用類解析而不是手動傳遞它。
use Illuminate\Database\Eloquent\Model;
echo Model::class;
// Outputs: Illuminate\Database\Eloquent\Model;