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

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

藏色散人
藏色散人転載
2021-05-07 09:12:411765ブラウズ

以下の 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 までご連絡ください。