摘要:轉(zhuǎn)至應(yīng)用程序根目錄中的命令行并運(yùn)行以下命令以創(chuàng)建新的服務(wù)提供者。將會(huì)提示運(yùn)行結(jié)果一旦服務(wù)提供者成功創(chuàng)建,打開該文件?,F(xiàn)在我們的服務(wù)提供者已經(jīng)完成,我們需要注冊我們的服務(wù)提供者,所以,會(huì)在引導(dǎo)期間加載它。這就是為服務(wù)提供者創(chuàng)建你的幫手。
Laravel 為我們提供了許多內(nèi)置的幫助函數(shù),你可以在應(yīng)用程序中的任何位置調(diào)用它。它們使你可以方便地處理數(shù)組和對象,路徑,字符串,URL和其他類型的工作流。
盡管在 Laravel 核心中定義了許多幫助函數(shù),但你可以在 Laravel 中定義自己的幫助函數(shù)以避免重復(fù)相同的代碼。它確保你的應(yīng)用程序有更好的可維護(hù)性。
我們來看看如何創(chuàng)建自己的定制 Laravel 幫助函數(shù)
Laravel 中的幫助函數(shù)Laravel 中有許多內(nèi)置的幫助程序可供你的應(yīng)用程序使用。它們根據(jù)它們提供的功能類型進(jìn)行分組。這是一個(gè)完整的內(nèi)置 Laravel 幫助文件。
數(shù)組和對象在這個(gè)組中,助手提供了處理數(shù)組和對象的能力。 該組包含用于添加兩個(gè)數(shù)組的輔助函數(shù),將多維數(shù)組折疊成單個(gè)數(shù)組,返回?cái)?shù)組的第一個(gè)元素,檢查數(shù)組中是否存在給定的項(xiàng)目或項(xiàng)目,并執(zhí)行許多其他類型的操作。
路徑這組helper返回Laravel應(yīng)用程序中不同目錄的絕對路徑,例如 app,config,public,resource,storage和你的應(yīng)用程序的基本路徑。
字符串該組中的助手使用字符串操作。 你可以將字符串轉(zhuǎn)換為駱駝大小寫,找到該類的基本名稱,運(yùn)行 htmlspecialchars,將文本轉(zhuǎn)換為kebab大小寫,將文本轉(zhuǎn)換為大小寫,并執(zhí)行許多其他類型的字符串操作。
URL助手的URLs組與生成URL一起工作。你可以為控制器操作生成URL,命名為route,以及指定路徑的完全限定URL。
雜項(xiàng)這類幫助程序包含處理頁面狀態(tài),服務(wù)容器,認(rèn)證,緩存等功能。
在Laravel中創(chuàng)建幫助文件在本節(jié)中,我們將通過創(chuàng)建Laravel幫助程序文件,該文件可以在Laravel應(yīng)用程序中全局使用。 你可以組織你的幫助程序文件的位置,但是,我更愿意將我的Laravel項(xiàng)目幫助程序文件保存在 app/Helpers/Helper.php 中。 在本教程中,我們將在我想要的位置創(chuàng)建一個(gè)幫助文件。
創(chuàng)建一個(gè)幫助文件你可以將你的幫助程序文件放在你的Laravel應(yīng)用程序的任何位置,將它放在你的應(yīng)用程序目錄下是標(biāo)準(zhǔn)的。
讓我們在app下創(chuàng)建一個(gè) Helpers 目錄并創(chuàng)建一個(gè) Helper.php 文件。這些是該文件的以下內(nèi)容。
如果你正在使用一個(gè)類并且它的方法是你的助手,你可以用命名空間聲明來啟動(dòng)這個(gè)文件。
namespace AppHelpers;如果你不使用命名空間聲明,則這些函數(shù)將變?yōu)槿挚捎茫闵踔量梢栽诓恢付Q空間的情況下使用它們。 所有Laravel內(nèi)置的幫助函數(shù)都是在沒有命名空間的情況下定義的。 此外,助手類也將在全局范圍內(nèi)提供。 因此,如果你想在不指定命名空間的情況下使用助手,只需刪除這一行。
定義這些函數(shù)時(shí)有一些注意事項(xiàng)。所有的Laravel助手文件函數(shù)都會(huì)被檢查以避免函數(shù)定義沖突。
if (!function_exists("human_file_size")) { function human_file_size($bytes, $decimals = 2) { // ... } }如果跳過此檢查,則每次重新定義具有相同定義的函數(shù)時(shí)都會(huì)發(fā)生沖突。你可以使用這個(gè)檢查,或者你也可以用你的函數(shù)名稱作為前綴來避免沖突。
使用幫助文件現(xiàn)在,就我們的幫助文件而言,就是這樣。讓我們看看如何在Laravel應(yīng)用程序中使用助手文件。
你可以使用 composer 自動(dòng)加載助手文件。然后,你可以在應(yīng)用程序的任何位置使用這些功能。
你也可以使用Laravel服務(wù)提供者注冊此文件。 Laravel會(huì)將其與其他依賴關(guān)系一起加載。
你也可以使用一個(gè)包含所有這些功能的軟件包。
讓我們看看如何使用所有這些方法。
通過Composer自動(dòng)加載第一個(gè)非常簡單直接。 只需轉(zhuǎn)到位于Laravel項(xiàng)目中的 composer.json 文件,你將看到自動(dòng)加載 key。 Composer 有一個(gè)key files(你想自動(dòng)加載的文件路徑數(shù)組),你可以在自動(dòng) `autoload 中使用它。 如:
"autoload": { "files": [ "app/Helpers/Helper.php" ], "classmap": [ "database/seeds", "database/factories" ], "psr-4": { "App": "app/" } },更改composer.json文件并向文件數(shù)組添加新路徑后,需要重新生成自動(dòng)加載文件。只需從Laravel項(xiàng)目目錄中的終端運(yùn)行此命令即可。
composer dump-autoload現(xiàn)在,你的幫助程序文件將自動(dòng)加載到你的Laravel項(xiàng)目中。
通過服務(wù)提供者加載讓我們來看看如何使用服務(wù)提供者來自動(dòng)加載助手文件。轉(zhuǎn)至應(yīng)用程序根目錄中的命令行并運(yùn)行以下命令以創(chuàng)建新的服務(wù)提供者。
php artisan make:provider HelperServiceProvider將會(huì)提示運(yùn)行結(jié)果
Provider created successfully.一旦服務(wù)提供者成功創(chuàng)建,打開該文件。在注冊方法中添加你的助手文件。
public function register() { $file = app_path("Helpers/Helper.php"); if (file_exists($file)) { require_once($file); } }在注冊方法中,我們包含了我們的依賴關(guān)系。 在大型項(xiàng)目中,你可能在目錄中有多個(gè)幫助程序文件,并且你想要全部這些文件。 你可以更改注冊方法,如下所示,你的服務(wù)提供商將加載Helpers目錄中的所有文件。
public function register() { foreach (glob(app_path() . "/Helpers/*.php") as $file) { require_once($file); } }它將需要 app/Helpers 目錄中的所有文件。
現(xiàn)在我們的服務(wù)提供者已經(jīng)完成,我們需要注冊我們的服務(wù)提供者,所以,Laravel會(huì)在引導(dǎo)期間加載它。 為此,請轉(zhuǎn)至 config/app.php 并在結(jié)尾處的 providers 數(shù)組中添加以下行。AppProvidersHelperServiceProvider::class,如果你的幫助文件涉及到一個(gè)擁有這些幫助方法的類,并且你已經(jīng)指定了命名空間,那么你可以通過定義一個(gè)別名來毫不費(fèi)力地使用它們。 您可以通過在 config/app.php 文件中的別名數(shù)組末尾添加以下內(nèi)容輕松完成此操作。
"Helper" => AppHelpersHelper::class,通過將這添加到別名數(shù)組中,你將能夠使用Helper關(guān)鍵字調(diào)用助手。這就是為服務(wù)提供者創(chuàng)建你的幫手。
使用第三方包加載你也可以使用第三方package: Laravel helpers package。你可以通過在控制臺(tái)中從你的應(yīng)用程序的根目錄運(yùn)行此命令來通過編寫器安裝它。
composer require browner12/helpers在 config/app.php 中的 providers 數(shù)組中添加以下行
browner12helpersHelperServiceProvider::class,如果你正在使用Laravel的自動(dòng)包發(fā)現(xiàn)功能,則可以跳過此步驟。 完成必要的步驟之后,你可以使用此命令創(chuàng)建助手文件。
php artisan make:helper Helper它將在 AppHelpers 中創(chuàng)建一個(gè) Helper.php 文件,你可以輕松添加所有幫助程序功能。
Helper 的具體使用現(xiàn)在我們的函數(shù)在Helper文件中定義,沒有定義名稱空間,我們可以很容易地使用它們。 只需在 routes/web.php 中找到你的路由文件,并將此功能用于首頁。 例如,這是完整的 routes/web.php 文件:
它將簡單地返回作為參數(shù)傳遞的字節(jié)數(shù)的可讀大小。你可以從任何地方控制器或視圖調(diào)用這些函數(shù)。
資源查看所有可用的 內(nèi)置Laravel助手
一個(gè)簡單的包來創(chuàng)建助手文件 browner12/helpers
了解有關(guān)使用 Composer Autoloader 的更多信息
歡迎留言討論。
更多PHP相關(guān),請前往PHPCasts
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/31992.html
摘要:原文地址為方法類函數(shù)生成文檔已經(jīng)成為了程序員的習(xí)慣所以需要知道通過源代碼生成獨(dú)立的文檔本文中我會(huì)介紹一款新的文檔生成工具什么是是插入到類接口方法屬性頂部的多行注釋為了闡明這個(gè)我們看下中的代碼片段開始于結(jié)束于每行之間使用當(dāng)定義一個(gè)類屬性或者 原文地址: Generating PHP Documentation with Sami 為方法, 類, 函數(shù)生成文檔已經(jīng)成為了程序員的習(xí)慣, 所以...
摘要:文章轉(zhuǎn)自更多文章如果您需要您的用戶支持多文件下載的話,最好的辦法是創(chuàng)建一個(gè)壓縮包并提供下載。你看,你不需要任何的擴(kuò)展包來實(shí)現(xiàn)這個(gè)壓縮方式。 showImg(https://segmentfault.com/img/remote/1460000018734388?w=1500&h=800); 文章轉(zhuǎn)自:https://learnku.com/laravel/t... 更多文章:https...
摘要:是一個(gè)記錄當(dāng)前應(yīng)用所受威脅情況的項(xiàng)目。怎么做呢用參數(shù)化查詢對數(shù)據(jù)格式化,并使查詢語句與數(shù)據(jù)分離。使用參數(shù)化查詢,可以確保程序遠(yuǎn)離注入風(fēng)險(xiǎn)。例子如下除此之外,還有一種安全的做法,就是在項(xiàng)目中使用對象關(guān)系映射或者是查詢構(gòu)造器。 showImg(https://segmentfault.com/img/remote/1460000018641613?w=1680&h=859); OWASP?...
摘要:介紹是最古老和最著名的單元測試包之一。它主要用于單元測試,這意味著可以用盡可能小的組件測試代碼,但是它也非常靈活,可以用于很多不僅僅是單元測試。這時(shí),的測試助手可以使這些測試像單元測試簡單組件一樣容易。新的測試代碼如下注意到,在我們新建的 showImg(https://segmentfault.com/img/remote/1460000018355157?w=1440&h=585)...
摘要:控制只是用來接收請求并請求邏輯處理類。事實(shí)上,業(yè)務(wù)邏輯無需感知網(wǎng)絡(luò),網(wǎng)絡(luò)僅僅接入應(yīng)用的傳輸機(jī)制,他不應(yīng)超出應(yīng)用中的路由和控制器的范疇。職責(zé)分離是編寫健壯應(yīng)用的關(guān)鍵。其他通常,類庫應(yīng)該以規(guī)范組織在我們的應(yīng)用中。 聲明:本文并非博主原創(chuàng),而是來自對《Laravel 4 From Apprentice to Artisan》閱讀的翻譯和理解,當(dāng)然也不是原汁原味的翻譯,能保證90%的原汁性,另...
閱讀 3410·2021-11-17 17:00
閱讀 3786·2021-08-09 13:46
閱讀 2854·2019-08-30 15:54
閱讀 589·2019-08-30 13:54
閱讀 2930·2019-08-29 17:13
閱讀 3200·2019-08-29 14:00
閱讀 2961·2019-08-29 11:11
閱讀 1355·2019-08-26 10:15