ホームページ > PHPフレームワーク > Laravel > Laravel で提案を書くためのガイドを共有する

Laravel で提案を書くためのガイドを共有する

藏色散人
リリース: 2021-05-08 08:58:22
転載
1770 人が閲覧しました

以下の laravel チュートリアル コラムでは、Laravel の提案の書き方についてのガイドを共有します。それが必要な友人にとって役立つことを願っています。

Laravel は、柔軟で魔法のような記述方法を多数提供するエレガントなフレームワークです。ただし、柔軟性が高くなるほど、いくつかの側面で小さな問題が発生する可能性があります。

以下は、議論と参照のみを目的として、Laravel が推奨しない記述方法のリストです。可能であれば、コメント欄でご意見をお聞かせください。

リクエストの問題

リクエスト パラメーターは、次の記述などの動的属性を通じて取得できます。

$name = $request->name;
ログイン後にコピー

この記述方法は推奨されません。属性名 クエリやコンテンツなどの独自クラスの属性の場合、予期せぬ影響が発生します。このタイプのキーワードをすべて覚えていない限り (すべての属性を覚えていたとしても、次のバージョンで新しい属性が追加されるかどうかは保証できません)、そうしないと、遅かれ早かれこの落とし穴に遭遇することになります。これを使用することは推奨されません。次の方法を使用することをお勧めします:

// 可以用这种方式
$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 は非常に便利な機能ですが、append がモデルに自動的に追加されると、次のような多くの問題が発生します。を選択すると、年齢フィールドはありませんが、追加フィールドは引き続き追加されます。これにより、多くの問題が発生することがあります。 $append 属性は使用しないことをお勧めします。必要に応じて、このプロパティをコントローラー層で読み込みます。

// model
class User extends Model
{
  public function getIsAdultAttribute()
  {
      return $this->attribute['age'] > 18;
  }
}
// controller
$user = User::first();
$user->append('is_adult');
ログイン後にコピー

要約: モデルの追加は使用しないでください。

モデルの動的プロパティ

// 第1种写法
$user = User::first();
// ?? 此动态属性如果是表字段名称是如 exists 等就会出问题。
$name = $user->name;
// 第2种写法更安全
$user = User::first()->toArray();
$name = $user['name'];
ログイン後にコピー

モデルには、オブジェクトを使用するときに動的プロパティもあります。これも競合の問題を引き起こしますが (通常は発生す​​る可能性は低いです)、データ テーブルのキーワードフィールドにはできるだけ出現しないようにする必要があります。 (2 番目の書き方の方が安全ですが、1 番目の書き方を好む人が多いと思います。データベース フィールドで次のキーワードを避けるだけで済みます。私も最初の書き方を使用するのが好きです。)

// /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php 
exists,
incrementing
timestamps
wasRecentlyCreated
ログイン後にコピー

この記事は随時更新していきますので、Laravelを使っている方はぜひ使い方を教えていただければ幸いです。

以上がLaravel で提案を書くためのガイドを共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート