建構屬於自己的Laravel Helper 輔助函數

更新於 2024/09/13閱讀時間約 4 分鐘

在公司專案裡,除了使用Laravel 提供的輔助函數外,我們還可以透過建構屬於自己的Helper function 可以方便地執行諸如處理陣列、文件路徑、字符串和路由等操作,來協助我們更方便處理重複的程式碼。

決定檔案放置位置

首先我們在Laravel應用程序裡創建我們的helpers文件,教學文檔有建議的位置,如下

  • app/helpers.php
  • app/Http/helpers.php

選擇創建在app底下

raw-image

使用Composer 自動加載

Laravel框架使用Composer自動加載機制來管理應用程序中的類文件,而在composer.json 文件中可以看到autoload 和 autoload-dev ,而在composer.json 文件中的 autoload 部分可以定義幾個不同的鍵(keys)來告訴 Composer 如何自動加載類文件。

這邊我們將使用files,來載入我們的 helpers.php

files:用於指定要在應用程序加載時引入的 PHP 文件。這可以用於引入一些全局的函數或設定文件。

"autoload": {
"files": ["app/helpers.php"]
}
raw-image

添加完 files 路徑後執行composer dump-autoload,而composer dump-autoload 是 Composer 命令的一部分,用於重新生成自動加載文件,以確保 Composer 正確地自動加載我們的 PHP 類文件。

composer dump-autoload

定義函數

接著創建我們的輔助函數,這邊根據文件說明,使用function_exists 檢查函數命名,以避免函數定義衝突。

這邊實作一個 ip 清單的檢查來過濾重複ip


//過濾重複ip及陣列包含'*'就只回傳'*'
if (!function_exists('filter_ip_list')) {
function filter_ip_list(array $ipList): array
{
if (empty($ipList)) {
return [];
}

$ipList = array_unique($ipList);
if (in_array('*', $ipList)) {
return ['*'];
}

return $ipList;
}
}

這邊是Controller的code

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class StoreAction extends Controller
{
/** * Handle the incoming request. */
public function __invoke(Request $request)
{
$apiWhiteList = filter_ip_list($request->get('apiWhiteList'));
dd($apiWhiteList);
}
}

測試函數執行

接著我們使用 postman 來執行測試這段程式碼是否根據設計的方式過濾重複 ip

raw-image

接著再傳入值多帶["*"],看是否只存放*

raw-image

總結:以上作業模式可以幫助我們將常使用的方法,把他整理到helper function裡面,透過 composer 自動加載,來讓我們可以更方便的使用,簡化一些程式碼在多個文件上的重複使用。






avatar-img
15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
DDDDD的沙龍 的其他內容
練習 PHPUnit 測試的撰寫,依序創建Controller、Service,並針對計算邏輯進行單元測試的練習。
在 Laravel 中的測試中,PHPUnit 和 Mockery 都可以用來創建測試替身(test double),但它們有不同的方式和功能,以下簡單介紹兩種寫法方式。
最近在研讀單元測試的藝術這本書,也剛好因為自己對單元測試的撰寫還沒有很游刃有餘XD,但由於我是挑重點看,簡單做個內容讀後感的整理
接續上一章Laravel Request 的概念簡單說明,接下來講 Request 特別的應用,而分享這部分的契機,主要是在新人時期面試時被問到的一題,不知道大家是否有被考過這題? 通常考官的問題:解釋一下關於Laravel 隱式綁定 or 是否聽過隱式綁定?
今天要來分享關於 Laravel Request 概念,Request 代表了來自客戶端(瀏覽器)的HTTP請求。這個類型的物件允許您輕鬆地訪問HTTP請求中的各種數據,例如表單數據、路由參數、Cookie、HTTP標頭等。 現在我們來定義及應用吧!
根據上一篇部署完畢Laravel 專案後,本章要來幫線上專案設定資料庫,fly.io 部署MySQL免費容量是3GB,在設定的時候要記得設定size,避免超過要收費。 接下來建置mysql 應用程序並創建屬於 mysql volume ,避免數據資料遺失~
練習 PHPUnit 測試的撰寫,依序創建Controller、Service,並針對計算邏輯進行單元測試的練習。
在 Laravel 中的測試中,PHPUnit 和 Mockery 都可以用來創建測試替身(test double),但它們有不同的方式和功能,以下簡單介紹兩種寫法方式。
最近在研讀單元測試的藝術這本書,也剛好因為自己對單元測試的撰寫還沒有很游刃有餘XD,但由於我是挑重點看,簡單做個內容讀後感的整理
接續上一章Laravel Request 的概念簡單說明,接下來講 Request 特別的應用,而分享這部分的契機,主要是在新人時期面試時被問到的一題,不知道大家是否有被考過這題? 通常考官的問題:解釋一下關於Laravel 隱式綁定 or 是否聽過隱式綁定?
今天要來分享關於 Laravel Request 概念,Request 代表了來自客戶端(瀏覽器)的HTTP請求。這個類型的物件允許您輕鬆地訪問HTTP請求中的各種數據,例如表單數據、路由參數、Cookie、HTTP標頭等。 現在我們來定義及應用吧!
根據上一篇部署完畢Laravel 專案後,本章要來幫線上專案設定資料庫,fly.io 部署MySQL免費容量是3GB,在設定的時候要記得設定size,避免超過要收費。 接下來建置mysql 應用程序並創建屬於 mysql volume ,避免數據資料遺失~
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
帶領同學們發揮自己的創意,在棋盤上譜出屬於自己的棋局,千年萬局,皆不相同。培養小朋友獨立思考,建構自己的圍棋王國,成為黑軍或白軍的最強軍師。
Thumbnail
身邊所接觸到的朋友大多是討厭城市生活,並且對於鄉村或充滿綠意的田園景致懷抱浪漫想像的人,許多作家也以城市普遍心靈冷漠,枯寂的生活來調侃:「所謂城市,就是千百萬人聚在一起,卻過著寂寞生活的地方。」「生活在大都市裏的人有很多種痛苦,有時候希望不理人,有時候希望找個人說話,但兩者均極為困難。」
Thumbnail
在公司專案裡,除了使用Laravel 提供的輔助函數外,我們還可以透過建構屬於自己的Helper function 可以方便地執行諸如處理陣列、文件路徑、字符串和路由等操作,來協助我們更方便處理重複的程式碼。
Thumbnail
喜多川泰是日本療癒系的作家,或者該說是勵志心靈派的青年導師吧?他的書經常被日本文部省(教育部)選為中學生必讀課外讀物,台灣翻譯了將近十本他的著作,其中好幾本還是由我寫序。     看他的書有點像是一齣適合闔家觀賞的日劇,劇情非常生活化,充滿畫面而且很感人。這本去年暑假出版的「書房的鑰匙」,談閱讀,
Thumbnail
「解嚴世代」的建築師在投入業界之前,是在怎樣的臺灣社會下成長,在大學又是受到哪樣的建築教育。這對一個建築界門外漢而言,可以說是一個相當好的入門理解。附圖是王大閎建築師設計的國父紀念館,他是一個被業主摧殘但仍秉持專業的偉大建築師(來源:國父紀念館維基條目)。
Thumbnail
在這個知識爆炸的時代,我們學習的速度,早就趕不上知識更新的速度。在知識傳遞的媒介和平台多到數不清的情況之下,我們卻似乎很難組織一套學有效的學習系統,所有的資訊將會是東一塊、西一塊,這種情況在vocus、medium的使用狀況上,應該感受特別明顯。
Thumbnail
今天想要來分享建構自己的思維體系,在生活中我們總會接收到各種不同的資訊,聽著別人的人云亦云,好像這個很好、那個也不錯,隨波逐流順應著社會的期待,卻沒有找到自己真正的核心思想。
Thumbnail
《三分鐘未來日記》這本書除了書本身以外,還附了一本【許願日記】,這本未來日記的使用方式(操作方式)是:a.三分鐘 b.重複49天 c.描摹 d. 未未完成式 1 每日三分鐘日記: 2 重複49天的力量: 3 描摹金句: 4未來式丶完成式: 未來日記的操作原理和邏輯 1覺察: 2注意力的分配:
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
帶領同學們發揮自己的創意,在棋盤上譜出屬於自己的棋局,千年萬局,皆不相同。培養小朋友獨立思考,建構自己的圍棋王國,成為黑軍或白軍的最強軍師。
Thumbnail
身邊所接觸到的朋友大多是討厭城市生活,並且對於鄉村或充滿綠意的田園景致懷抱浪漫想像的人,許多作家也以城市普遍心靈冷漠,枯寂的生活來調侃:「所謂城市,就是千百萬人聚在一起,卻過著寂寞生活的地方。」「生活在大都市裏的人有很多種痛苦,有時候希望不理人,有時候希望找個人說話,但兩者均極為困難。」
Thumbnail
在公司專案裡,除了使用Laravel 提供的輔助函數外,我們還可以透過建構屬於自己的Helper function 可以方便地執行諸如處理陣列、文件路徑、字符串和路由等操作,來協助我們更方便處理重複的程式碼。
Thumbnail
喜多川泰是日本療癒系的作家,或者該說是勵志心靈派的青年導師吧?他的書經常被日本文部省(教育部)選為中學生必讀課外讀物,台灣翻譯了將近十本他的著作,其中好幾本還是由我寫序。     看他的書有點像是一齣適合闔家觀賞的日劇,劇情非常生活化,充滿畫面而且很感人。這本去年暑假出版的「書房的鑰匙」,談閱讀,
Thumbnail
「解嚴世代」的建築師在投入業界之前,是在怎樣的臺灣社會下成長,在大學又是受到哪樣的建築教育。這對一個建築界門外漢而言,可以說是一個相當好的入門理解。附圖是王大閎建築師設計的國父紀念館,他是一個被業主摧殘但仍秉持專業的偉大建築師(來源:國父紀念館維基條目)。
Thumbnail
在這個知識爆炸的時代,我們學習的速度,早就趕不上知識更新的速度。在知識傳遞的媒介和平台多到數不清的情況之下,我們卻似乎很難組織一套學有效的學習系統,所有的資訊將會是東一塊、西一塊,這種情況在vocus、medium的使用狀況上,應該感受特別明顯。
Thumbnail
今天想要來分享建構自己的思維體系,在生活中我們總會接收到各種不同的資訊,聽著別人的人云亦云,好像這個很好、那個也不錯,隨波逐流順應著社會的期待,卻沒有找到自己真正的核心思想。
Thumbnail
《三分鐘未來日記》這本書除了書本身以外,還附了一本【許願日記】,這本未來日記的使用方式(操作方式)是:a.三分鐘 b.重複49天 c.描摹 d. 未未完成式 1 每日三分鐘日記: 2 重複49天的力量: 3 描摹金句: 4未來式丶完成式: 未來日記的操作原理和邏輯 1覺察: 2注意力的分配: