ホームページ > 記事 > PHPフレームワーク > 知っておく価値のあるLaravelの7つのベストプラクティス
Web 開発者は皆、コードを記述する際に独自のスタイルを持っています。同時に、Laravel フレームワークを使用すればすべての準備が整いますが、ここでの用語を誤って使用することがよくあります。さまざまなスタイルに関しては大したことではありませんが、コードが適切なスタイルに従っていることを確認する必要があります。これは、コードが拡張可能、保守可能、テスト可能でなければならないことを意味します。 [関連する推奨事項: laravel ビデオ チュートリアル ]
コードの良し悪しの原因は何でしょうか? PHP はオブジェクト指向言語であるため、SOLID 設計原則などのオブジェクト指向の原則に従い、継承や抽象化などのオブジェクト指向メカニズムの使用を検討する必要があります。さらに、Laravel には大規模なコミュニティがあり、コミュニティによって作成された規約がいくつか存在することがあります。したがって、これらの規則に従う他のlaravel開発者は、私たちのコードをより良く、より速く理解することができます。この記事では、オブジェクト指向の原則といくつかの Laravel コミュニティ規約に基づいた Laravel の 7 つのベスト プラクティスを紹介します。
非常に複雑なクエリ ビルダーまたは生の SQL ステートメントがある場合は、このクエリをモデルまたはウェアハウスに移動する必要があります。 。
Bad:
<?php public function index() { $partners = Partner::where('email_verified_at', '!=', null) ->with(['products' => function ($q) { $q->whereDate('created_at', now()); }]) ->get(); return view('index', ['partners' => $partners]); }
Good:
<?php public function index() { return view('index', ['partners' => $this->partner->newProducts()]); } class Partner extends Model { public function newProducts() { return $this->where('email_verified_at', '!=', null) ->with(['products' => function ($q) { $q->whereDate('created_at', now()); }]) ->get(); } }
のビジネス ロジックは、上の 1 つ目 ポイント関連では、シン コントローラーを用意し、次にすべてのビジネス ロジックを別個のサービス クラスに移動する必要があります。したがって、コントローラーの責任は 1 つだけである必要があり、できればこのサービスを他のコントローラーで再利用できます。
悪い:
<?php public function store(Request $request) { $user = User::create(); $user->update(['last_login' => now()]); dispatch(new UserCreated($user)); // ... }
良い:
<?php public function store(Request $request) { $this->userService->create($request); .... } class UserService { public function create($request) { // ... } }
Eloquent をクエリに使用すると、読みやすくなり、SQL インジェクションが回避され、保守が容易になります。
悪い例:
<?php SELECT * FROM `articles` WHERE EXISTS (SELECT * FROM `users` WHERE `articles`.`user_id` = `users`.`id` AND EXISTS (SELECT * FROM `profiles` WHERE `profiles`.`user_id` = `users`.`id`) AND `users`.`deleted_at` IS NULL) AND `verified` = '1' AND `active` = '1' ORDER BY `created_at` DESC
良い例:
<?php Article::has('user.profile')->verified()->latest()->get();
引っ越しを検討すべきです再利用可能なロジック/コンポーネント パーツを別の場所に配置します。
ブレード テンプレートでは、コンポーネントを使用してフロントエンド パーツを再利用できます。サーバーでは、ロジックを別のサービス クラスや Eloquent スコープに移動したり、独自のパッケージを作成したりすることもできます。
<!DOCTYPE html> <html> <head> <title>DRY</title> </head> <body> <h1>Custom Calendar</h1> <x-custom-calendar> </body> </html>
Blade テンプレートでクエリを実行することは可能ですが、実行しないことをお勧めします。 ######悪い。 N1 問題が発生します。
@foreach (User::all() as $user) {{ $user->email }} @endforeach
わかりました:
$users = User::all(); // Server Query @foreach ($users as $user) {{ $user->email }} @endforeach6. データベース トランザクションの使用
<?php public function store(Request $request) { DB::beginTransaction(); $user = User::create(); $response = app('service')->create($user); if (!$response) { DB::rollback(); return; } // ... DB::commit(); }7. テキストをハードコーディングしないでください
trans('user.created'); // 'User Successfully Created' $types = Product::TYPES; // Const in a Class/Model元のアドレス: https://cerwyn.medium.com/7-best-practices-in-laravel-you-Should-know-2ed9878293de
プログラミング ビデオ翻訳アドレス: https ://learnku.com/laravel/t/67021
プログラミング関連の知識については、
以上が知っておく価値のあるLaravelの7つのベストプラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。