每個 web 開發人員在寫程式碼時都有自己的風格。同時,如果我們使用 Laravel 框架,一切都準備就緒,但通常我們在這裡誤用了術語。涉及不同的風格問題不大,但我們必須確保我們的程式碼遵循良好的風格。這意味著我們的程式碼必須可擴展,可維護和可測試。 【相關推薦:laravel影片教學】
是什麼讓我們的程式碼變得糟糕或好?因為PHP是一種物件導向的語言,我們應該遵循物件導向的原則,如 SOLID 設計原則,並考慮使用物件導向機制,如繼承,抽像等。此外,Laravel有一個大社區,有時會有一些社區創造的約定。因此,其他遵循這些約定的 laravel 開發人員能夠更好地、更快地理解我們的程式碼。在本文中,我將根據物件導向原則和一些 Laravel 社群約定,在 Laravel 上向你展示7個最佳實踐。
如果我們有一個非常複雜的查詢建構器或原始SQL語句,我們應該將此查詢移至模型或倉庫中。
壞的:
<?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]); }
好的:
<?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(); } }
與上述第一點相關,我們應該有一個瘦控制器,然後我們應該將所有業務邏輯移動到單獨的服務類別。所以控制器應該只有一個職責,希望我們可以在其他控制器中重複使用這個服務。
壞的:
<?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();
在 blade 模板中,我們可以使用元件來重複使用前端部分。在伺服器中,我們可以將邏輯移動到一個單獨的服務類別、Eloquent scope作用域,甚至可以建立我們自己的套件。
<!DOCTYPE html> <html> <head> <title>DRY</title> </head> <body> <h1>Custom Calendar</h1> <x-custom-calendar> </body> </html>
@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://cerwyn.medium.com/7-best-practices-in-laravel-you-should-know-2ed9878293de譯文網址:https ://learnku.com/laravel/t/67021更多程式相關知識,請造訪:
程式設計影片! !
以上是7 個值得了解的 Laravel 最佳實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!