知っておく価値のあるLaravelの7つのベストプラクティス
Web 開発者は皆、コードを記述する際に独自のスタイルを持っています。同時に、Laravel フレームワークを使用すればすべての準備が整いますが、ここでの用語を誤って使用することがよくあります。さまざまなスタイルに関しては大したことではありませんが、コードが適切なスタイルに従っていることを確認する必要があります。これは、コードが拡張可能、保守可能、テスト可能でなければならないことを意味します。 [関連する推奨事項: laravel ビデオ チュートリアル ]
コードの良し悪しの原因は何でしょうか? PHP はオブジェクト指向言語であるため、SOLID 設計原則などのオブジェクト指向の原則に従い、継承や抽象化などのオブジェクト指向メカニズムの使用を検討する必要があります。さらに、Laravel には大規模なコミュニティがあり、コミュニティによって作成された規約がいくつか存在することがあります。したがって、これらの規則に従う他のlaravel開発者は、私たちのコードをより良く、より速く理解することができます。この記事では、オブジェクト指向の原則といくつかの Laravel コミュニティ規約に基づいた Laravel の 7 つのベスト プラクティスを紹介します。
1. ファット モデル、シン コントローラー
非常に複雑なクエリ ビルダーまたは生の 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(); } }
2. サービス クラス
のビジネス ロジックは、上の 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) { // ... } }
3.雄弁なクエリは、ネイティブ SQL ステートメントよりも優れています。
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();
4.DRY (同じことを繰り返さないでください)
引っ越しを検討すべきです再利用可能なロジック/コンポーネント パーツを別の場所に配置します。
ブレード テンプレートでは、コンポーネントを使用してフロントエンド パーツを再利用できます。サーバーでは、ロジックを別のサービス クラスや Eloquent スコープに移動したり、独自のパッケージを作成したりすることもできます。
<!DOCTYPE html> <html> <head> <title>DRY</title> </head> <body> <h1>Custom Calendar</h1> <x-custom-calendar> </body> </html>
5. Blade テンプレートでクエリを実行しないでください
Blade テンプレートでクエリを実行することは可能ですが、実行しないことをお勧めします。 ######悪い。 N1 問題が発生します。
@foreach (User::all() as $user) {{ $user->email }} @endforeach
わかりました:
$users = User::all(); // Server Query @foreach ($users as $user) {{ $user->email }} @endforeach
複雑で長いロジック/クエリがある場合は、データベースの使用を検討する必要があります。取引。この機能を使用すると、必要に応じてデータベースを簡単にロールバックして、データがデータベースに保存されないようにすることができるため、データの信頼性を確信できます。
<?php public function store(Request $request) { DB::beginTransaction(); $user = User::create(); $response = app('service')->create($user); if (!$response) { DB::rollback(); return; } // ... DB::commit(); }
コード/コントローラー内のテキストをハードコーディングしないでください。これにより、将来の保守と拡張が容易になります。ユーザーにメッセージを表示したい場合は、翻訳を使用したり、モデル/クラスの定数を使用して値を設定したり、構成ファイルを使用して構成を保存したりできます。
trans('user.created'); // 'User Successfully Created' $types = Product::TYPES; // Const in a Class/Model
プログラミング ビデオ翻訳アドレス: https ://learnku.com/laravel/t/67021
プログラミング関連の知識については、
以上が知っておく価値のあるLaravelの7つのベストプラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

Laravelの電子メールの送信が失敗したときに戻りコードを取得する方法。 Laravelを使用してアプリケーションを開発する場合、検証コードを送信する必要がある状況に遭遇することがよくあります。そして実際には...
