溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Laravel好用的輔助函數(shù)有哪些

發(fā)布時(shí)間:2021-01-22 14:51:14 來源:億速云 閱讀:152 作者:小新 欄目:編程語言

小編給大家分享一下Laravel好用的輔助函數(shù)有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

作為一個(gè)以Laravel為主的PHP全棧開發(fā)人員,我會(huì)經(jīng)常去尋找一些框架中、可以為我所用的、有效減少開發(fā)時(shí)間或者減少代碼復(fù)雜性的方法。

下面是我整理的在平常會(huì)經(jīng)常用到的一些不錯(cuò)的輔助方法。文中方法大都基于Laravel7以及更早的版本。

讓我們一探究竟吧

Str::limit()

我們的第一個(gè)輔助函數(shù) 獲取一個(gè)字符串并用一個(gè)設(shè)定的字符長(zhǎng)度限制截?cái)嗨?/strong> 。它有兩個(gè)必須參數(shù):你想截?cái)嗟淖址?,以及返回的被截?cái)嗟淖址淖址L(zhǎng)度限制。

use Illuminate\Support\Str;

$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20);

// The quick brown fox ...

你也可以傳入第三個(gè)可選參數(shù)來控制返回的字符串后顯示什么。

use Illuminate\Support\Str;

$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20, '[...]');

// The quick brown fox [...]

我發(fā)現(xiàn)這用于把一大段文本縮短為摘要或文章列表的帖子預(yù)覽是完美的。

head()

這個(gè)功能超贊。 一個(gè)簡(jiǎn)單的方法通常由幾個(gè)嵌套的原始PHP函數(shù)組成,head()會(huì)返回?cái)?shù)組的第一個(gè)元素。 由于其全局性和無處不在的性質(zhì),我已經(jīng)在許多不同的應(yīng)用程序中使用了它。

$array = [100, 200, 300];

$first = head($array);

// 100

想要反著來嗎? 使用last方法可以獲取數(shù)組的最后一個(gè)元素。

$array = [100, 200, 300];

$last = last($array);

// 300

這是關(guān)于使用head和last方法的最佳方法,因?yàn)樗鼈兏静挥绊懺紨?shù)組。

Str::between()

顧名思義, Str::between() 會(huì) 返回字符串中的內(nèi)容。如果沒有找到指定字符串,返回 null

use Illuminate\Support\Str;

$slice = Str::between('My name is Inigo Montoya.', 'My name is ', '.');

// 'Inigo Montoya'

我喜歡用這種方式從 ()[] 之間獲取信息、返回 url 中的特定部分、甚至是從 html 標(biāo)簽中解析數(shù)據(jù)。

blank()

empty()差不多,但是更好用。它根據(jù)你傳入的參數(shù)是否包含實(shí)際數(shù)據(jù),來返回一個(gè)布爾值。

// all of these return true
blank('');
blank('   ');
blank(null);
blank(collect());

// all of these return false
blank(true);
blank(false);
blank(0);

這個(gè)輔助函數(shù)在結(jié)合表單驗(yàn)證、除去 API 中沒有規(guī)范輸入的數(shù)據(jù)時(shí),特別有用。
它比 empty(trim()) 更好用。

Str::contains()

我們期待已久的輔助函數(shù), 確定一個(gè)字符串中是否包含另一個(gè)字符串. 這個(gè)問題在 StackOverflow 和其他編程論壇上已經(jīng)被問過很多次了, 因?yàn)槟壳霸谄胀≒HP程序中只能使用 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的批準(zhǔn),PHP將很快擁有自己的str_contains方法,這將使該方法過時(shí)。不過在此之前,它是Laravel中最有用的輔助函數(shù)之一。

Arr::pluck()

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

讓我們來看一個(gè)簡(jiǎn)單的例子:

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']

傳入一個(gè)數(shù)組和一個(gè)點(diǎn)符號(hào)字符串來確定我們想要的鍵值,然后遍歷多維數(shù)組,并將指定鍵所對(duì)應(yīng)值的一維數(shù)組返回給我們。

我在返回的API數(shù)據(jù)中多次使用過該方法(當(dāng)我覺得不需要使用整個(gè)的集合時(shí))。它使獲得ID,名稱或其他屬性的數(shù)組變得非常容易,而無需創(chuàng)建整個(gè)foreach循環(huán)。

collect()

一旦發(fā)現(xiàn)集合有關(guān)的信息,我就不會(huì)停止使用它們。 這可能是我發(fā)現(xiàn)自己最常使用的助手函數(shù),它可以讓您 將數(shù)組轉(zhuǎn)換為集合

為什么這很重要? 因?yàn)榧蠋в写罅康谋憬莘椒?,您可以將它們組合在一起用最簡(jiǎn)單的閉包參數(shù)對(duì)數(shù)組執(zhí)行各種過濾,排序和修改等操作。 沒有foreach 循環(huán),沒有中間變量,只是干凈的代碼。

看看這個(gè)簡(jiǎn)單的例子:

$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']

老實(shí)說,這只是集合的冰山一角。 我在項(xiàng)目中都使用了它們,尤其是當(dāng)我要處理不是來自數(shù)據(jù)庫(kù)模型的龐大而復(fù)雜的數(shù)據(jù)集時(shí)。 CSV 數(shù)據(jù),外部API請(qǐng)求和目錄結(jié)構(gòu)都可以從放入集合中使用。

這就是我現(xiàn)在所了解的!

以上是“Laravel好用的輔助函數(shù)有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI