Laravel 優雅的框架,同時提供了大量靈活並且神奇的寫法。但越靈活,在一些方面可能會存在小問題。
以下列出 Laravel 不太建議的寫法,僅大家討論與參考。如果可能的話在評議區說出你的看法吧。
Request 問題
Request 引數可以通過動態屬性獲取,如以下寫法:
$name = $request->name;
該寫法非常不建議,原因是如果屬性名稱為 query 或者 content 之類原本類的屬性,就會產生非預期效果。除非你把所有該類的所以關鍵詞都記住(就算你記住所有的屬性,你也保證不了下個版本會不會加新的屬性),否則你早晚會遇到這個坑。比較不建議使用,建議使用如下方式:
// 可以用這種方式
$name = $request->input('name');
// 或用這種方式
$input = $request->all();
$name = $input['name'];
總結:不使用 request 動態屬性。
Model appends
class User extends Model
{
protected $appends = ['is_adult'];
public function getIsAdultAttribute()
{
return $this->attribute['age'] > 18;
}
}
getXxxAttribute是一個很用的特性,但如果model中自動append就會產生很多問題,如你在select的時候,沒有age欄位,依然會幫你加上append的欄位,這有時會帶來很多問題。建議不使用$append這個屬性。在需要的時候,在controller層載入這個屬性。
// model
class User extends Model
{
public function getIsAdultAttribute()
{
return $this->attribute['age'] > 18;
}
}
// controller
$user = User::first();
$user->append('is_adult');
總結:不使用 model 的 appends。
本文會不定期更新,希望用Laravel的人一起分享你們的使用建議。
本作品採用《CC 協議》,轉載必須註明作者和本文連結