每個 web 開發人員在寫程式碼時都有自己的風格。同時,如果我們使用 Laravel 框架,一切都準備就緒,但通常我們在這裡誤用了術語。涉及不同的風格問題不大,但我們必須確保我們的程式碼遵循良好的風格。這意味著我們的程式碼必須可擴展,可維護和可測試。 【相關推薦:laravel影片教學】
是什麼讓我們的程式碼變得糟糕或好?因為PHP是一種物件導向的語言,我們應該遵循物件導向的原則,如 SOLID 設計原則,並考慮使用物件導向機制,如繼承,抽像等。此外,Laravel有一個大社區,有時會有一些社區創造的約定。因此,其他遵循這些約定的 laravel 開發人員能夠更好地、更快地理解我們的程式碼。在本文中,我將根據物件導向原則和一些 Laravel 社群約定,在 Laravel 上向你展示7個最佳實踐。
1.胖模型,瘦控制器
如果我們有一個非常複雜的查詢建構器或原始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(); } }
#2.服務類別中的業務邏輯
與上述第一點相關,我們應該有一個瘦控制器,然後我們應該將所有業務邏輯移動到單獨的服務類別。所以控制器應該只有一個職責,希望我們可以在其他控制器中重複使用這個服務。
壞的:
<?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.Eloquent 查詢優於原生 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 (Don't Repeat Yourself)
##我們應該考慮將可重複使用的邏輯/元件部分移動到單獨的地方。在 blade 模板中,我們可以使用元件來重複使用前端部分。在伺服器中,我們可以將邏輯移動到一個單獨的服務類別、Eloquent scope作用域,甚至可以建立我們自己的套件。
<!DOCTYPE html> <html> <head> <title>DRY</title> </head> <body> <h1 id="Custom-nbsp-Calendar">Custom Calendar</h1> <x-custom-calendar> </body> </html>
5.不要在 Blade 模板中執行查詢
#儘管在 blade 模板中執行查詢是可行的, 但最好不要這麼做。 壞的。將會造成 N 1 問題。@foreach (User::all() as $user) {{ $user->email }} @endforeach好的:
$users = User::all(); // Server Query @foreach ($users as $user) {{ $user->email }} @endforeach
6.使用資料庫事務
如果我們有一些複雜而冗長的邏輯/查詢,那麼我們應該考慮使用資料庫事務。透過使用此功能,我們可以在需要時輕鬆回滾資料庫,以確保我們的資料不會保存到資料庫中,因此我們確信我們的資料是可靠的。<?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更多程式相關知識,請造訪:
程式設計影片! !
以上是7 個值得了解的 Laravel 最佳實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Laravel的遷移系統在最新版本中提供了哪些新功能和最佳實踐? 1.新增了nullableMorphs()用於多態關係。 2.引入了after()方法來指定列順序。 3.強調處理外鍵約束以避免孤立記錄。 4.建議優化性能,如適當添加索引。 5.提倡遷移的冪等性和使用描述性名稱。

Laravel的最新版本引入了多個新功能:1.LaravelPennant用於管理功能標誌,允許分階段發布新功能;2.LaravelReverb簡化了實時功能的實現,如實時評論;3.LaravelVite加速了前端構建過程;4.新的模型工廠系統增強了測試數據的創建;5.改進了錯誤處理機制,提供了更靈活的錯誤頁面自定義選項。

SoftleteTeinElelelverisling -Memptry -BraceChortsDevetus -teedeeceteveveledeveveledeecetteecetecetecedelave

laravel10.xisthecurrentversion,offeringNewFeaturesLikeEnumSupportineloQuentModelsAndModersAndImpreverModeModeModelBindingWithenums.theSeupDatesEupDatesEnhanceCodereadability andSecurity andSecurity和butquirecareecarefulecarefulecarefulplanninganninganningalmplementAlimplemplemplemplemplemplempletationForupforupsupflade。

laravelmigrationsStreamLinedAtabasemangementbyallowingbolAlyChemachangeStobEdeDinedInphpcode,whobeversion-controllolleDandShared.here'showtousethem:1)createMigrationClassestodeFinePerationFineFineOperationsLikeCreatingingModifyingTables.2)

要查找最新版本的Laravel,可以訪問官方網站laravel.com並點擊右上角的"Docs"按鈕,或使用Composer命令"composershowlaravel/framework|grepversions"。保持更新有助於提升項目安全性和性能,但需考慮對現有項目的影響。

youshouldupdateTotheLateStlaravelVerverSionForPerformanceImprovements,增強的安全性,newfeatures,BetterCommunitySupport,and long-term-Maintenance.1)績效:Laravel9'Selover9'seloquentormoptimizatizationenenhanceApplicationsPeed.2)secuse:laravel8InIntrododeDodecter.2)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver Mac版
視覺化網頁開發工具