【整理分享】幾個實用的 Laravel 輔助函數

青灯夜游
發布: 2022-12-28 21:01:06
轉載
1569 人瀏覽過

身為一個以Laravel為主的PHP全端開發人員,我會經常去尋找一些框架中、可以為我所使用的、有效減少開發時間或減少程式碼複雜性的方法。以下是我整理的平常會常用到的一些不錯的輔助方法。讓我們一探究竟吧 ✨

【整理分享】幾個實用的 Laravel 輔助函數

文中方法大都基於Laravel7以及更早的版本。 (如果遇到問題,請先檢查是否為版本相容問題)

Str::limit()

我們的第一個輔助函數取得一個字串並用一個設定的字元長度限制截斷它。它有兩個必須參數:你想截斷的字串,以及傳回的被截斷的字串的字元長度限制。 【相關推薦:laravel影片教學

use Illuminate\Support\Str; $truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20); // The quick brown fox ...
登入後複製

你也可以傳入第三個可選參數來控制回傳的字串後顯示什麼。

use Illuminate\Support\Str; $truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20, '[...]'); // The quick brown fox [...]
登入後複製

我發現這用於把一大段文字縮短為摘要或文章清單的貼文預覽是完美的。

head()

這個功能超讚。一個簡單的方法通常由幾個巢狀的原始PHP函數組成,head()會傳回陣列的第一個元素。由於其全局性和無處不在的性質,我已經在許多不同的應用程式中使用了它。

$array = [100, 200, 300]; $first = head($array); // 100
登入後複製

想反著來嗎?使用last方法可以取得陣列的最後一個元素。

$array = [100, 200, 300]; $last = last($array); // 300
登入後複製

這是關於使用head和last方法的最佳方法,因為它們根本不影響原始陣列。

Str::between()

顧名思義,Str::between() 會傳回字串中的內容。如果沒有找到指定字串,則傳回null

use Illuminate\Support\Str; $slice = Str::between('My name is Inigo Montoya.', 'My name is ', '.'); // 'Inigo Montoya'
登入後複製

我喜歡用這種方式從()[]之間獲取資訊、返回url 中的特定部分、甚至從html 標籤中解析數據。

blank()

empty()差不多,但比較好用。它根據你傳入的參數是否包含實際數據,來傳回一個布林值。

// all of these return true blank(''); blank(' '); blank(null); blank(collect()); // all of these return false blank(true); blank(false); blank(0);
登入後複製

這個輔助函數在結合表單驗證、除去 API 中沒有規範輸入的資料時,特別有用。
它比empty(trim())更好用。

Str::contains()

我們期待已久的輔助函數,確定字串中是否包含另一個字串.這個問題在StackOverflow和其他程式設計論壇上已經被問過很多次了, 因為目前在普通PHP程式中只能使用strpos.

use Illuminate\Support\Str; $contains = Str::contains('My name is Inigo Montoya.', 'Inigo'); // true $contains = Str::contains('My name is Inigo Montoya.', 'Andrew'); // false
登入後複製

隨著最近的rfc的批准,PHP很快就會擁有自己的str_contains方法,這將使該方法過時。不過在此之前,它是Laravel中最有用的輔助函數之一。

Arr::pluck()

該方法可以說是我在本文中列出的更強大的方法之一,Arr::pluck遍歷多維數組並檢索給定鍵的所有值

讓我們來看一個簡單的例子:

use Illuminate\Support\Arr; $array = [ ['website' => ['id' => 1, 'url' => 'reddit.com']], ['website' => ['id' => 2, 'url' => 'twitter.com']], ['website' => ['id' => 3, 'url' => 'dev.to']], ]; $names = Arr::pluck($array, 'website.url'); // ['reddit.com', 'twitter.com', 'dev.to']
登入後複製

傳入一個陣列和一個點符號字串來確定我們想要的鍵值,然後遍歷多維數組,並將指定鍵所對應值的一維數組傳回給我們。

我在傳回的API資料中多次使用過該方法(當我覺得不需要使用整個的集合時)。它使獲得ID,名稱或其他屬性的陣列變得非常容易,而無需創建整個foreach循環。

collect()

一旦發現集合有關的信息,我就不會停止使用它們。這可能是我發現自己最常使用的助手函數,它可以讓您將陣列轉換為集合

為什麼這很重要?因為集合帶有大量的便捷方法,您可以將它們組合在一起用最簡單的閉包參數對數組執行各種過濾,排序和修改等操作。沒有foreach 循環,沒有中間變量,只是乾淨的程式碼。

看看這個簡單的例子:

$collection = collect(['Keys', 'Krates']); return $collection->map(function ($value) { return Str::upper($value); }); // ['KEYS', 'KRATES'] return $collection->filter(function ($value) { return strlen($value) > 4; }); // ['Krates']
登入後複製

老實說,這只是集合的冰山一角。我在專案中都使用了它們,尤其是當我要處理不是來自資料庫模型的龐大而複雜的資料集時。 CSV 數據,外部API請求和目錄結構都可以從放入集合中使用。

這就是我現在所了解的!

原文網址:https://dev.to/aschmelyun/my-favorite-laravel-helpers-and-how-to-use-them-28ij

#譯文網址:https://learnku.com/laravel/t/43776

更多程式相關知識,請造訪:程式設計影片! !

以上是【整理分享】幾個實用的 Laravel 輔助函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:learnku.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!