下麵是我整理的在平常會經常用到的一些不錯的輔助方法。文中方法大都基於 Laravel7 以及更早的版本。(如果遇到問題,請先檢查是否是版本相容問題) Str::limit() 我們的第一個輔助函數 獲取一個字元串並用一個設定的字元長度限制截斷它 。它有兩個必須參數:你想截斷的字元串,以及返回的被截斷 ...
下麵是我整理的在平常會經常用到的一些不錯的輔助方法。文中方法大都基於 Laravel7 以及更早的版本。(如果遇到問題,請先檢查是否是版本相容問題)
Str::limit()
我們的第一個輔助函數 獲取一個字元串並用一個設定的字元長度限制截斷它 。它有兩個必須參數:你想截斷的字元串,以及返回的被截斷的字元串的字元長度限制。
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-la...
譯文地址:https://learnku.com/laravel/t/43776
更多學習內容請訪問:
騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)