分享我最喜愛的七個Laravel輔助函數

2020-08-12 16:02:38

下面 下麪由框架教學欄目給大家介紹分享我最喜愛的七個Laravel輔助函數,希望對需要的朋友有所幫助!

Laravel

作爲一個以Laravel爲主的PHP全棧開發人員,我會經常去尋找一些框架中、可以爲我所用的、有效減少開發時間或者減少程式碼複雜性的方法。

下面 下麪是我整理的在平常會經常用到的一些不錯的輔助方法。文中方法大都基於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

以上就是分享我最喜愛的七個Laravel輔助函數的詳細內容,更多請關注php中文網其它相關文章!