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

来源:https://www.cnblogs.com/a609251438/archive/2020/04/27/12789845.html
-Advertisement-
Play Games

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

更多學習內容請訪問:

騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)​zhuanlan.zhihu.com圖標

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本篇文章給大家介紹一下PHP連接MySQL資料庫的三種方式(mysql、mysqli、pdo),結合實例形式分析了PHP基於mysql、mysqli、pdo三種方式連接MySQL資料庫的相關操作技巧與註意事項。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。 PHP與MySQL的連接 ...
  • 1. 什麼是介面測試?為什麼要做介面測試? 介面測試是測試系統組件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。 由於如今的系統複雜度不斷上升,傳統的測試方法成本急劇增加且測試 ...
  • 一、什麼是協程 引例: import time # 串列執行計算密集型的任務 1.2372429370880127 def func1(): for i in range(10000000): i + 1 def func2(): for i in range(10000000): i + 1 st ...
  • 一、Idea當中有兩種方法可以查看繼承關係 在Idea當中選中一個類,然後按Ctrl+H,可以快速查看當前所選類的繼承關係,如下圖: ​ 同樣選中一個類,按CTRL+ALT+U,即可生成當前類的繼承關係圖,如下圖: ​ 二、二者的區別 上述兩種方法都能幫我們快速查看類之間的層次關係。 ​ 第一種方法 ...
  • 前言 使用Python爬取任意網頁的資源文件,比如圖片、音頻、視頻;一般常用的做法就是把網頁的HTML請求下來通過XPath或者正則來獲取自己想要的資源,這裡我做了一個爬蟲工具軟體,可以一鍵爬取資源 媒體文件;但是需要說明的是,這裡爬取資源文件只針對HTML已有的文件,如果需要二次請求的是爬取不到的 ...
  • 前言 猶記得當初學習Python的時候,對於Python一切皆對象很是懵逼,因為Python是面向對象的動態型語言,而在函數及高階函數的應用中,如若對於一切皆對象不是有很透徹的瞭解,基礎不是那麼牢固的話,那麼對於今後的Python進階而言,就有點拖後腿了,鑒於有朋友跟我聯繫說,對於一切皆對象掌握的不 ...
  • 1、進程池的作用 進程池來控制進程數目,比如httpd的進程模式,規定最小進程數和最大進程數 2、創建進程池的類Pool 如果指定numprocess為3,則進程池會從無到有創建三個進程,然後自始至終使用這三個進程去執行所有任務,不會開啟其他進程 Pool([numprocess [,initial ...
  • 基礎環境 裝好寶塔服務 寶塔里裝好【Python項目管理器】 寶塔里裝好【Nginx】 把Django項目代碼發到伺服器 把代碼放到伺服器上有兩種方法: 方法一:伺服器上安裝Git,通過Git Clone代碼到伺服器上 方法二:通過寶塔的FTP工具把代碼上傳上去 註意: 在目錄: 下新建一個文件夾, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...