文章轉發自專業的Laravel開發者社區,原始連接:learnku.com/laravel/t/3…php
你可能想建立一個在應用的任何地方均可以訪問的函數,這個教程將幫你實現 👏laravel
不少教程都會說,你在composer.json
這個文件中經過添加一個自動加載的文件,就能夠實現這個需求。但我認爲這不是一個好的方式,當你在
helpers.php
文件中添加了更多的函數時,可讀性將變得不好。
下面我將介紹一種方式,讓你能夠定義不少文件,來包含不一樣的函數。這將讓咱們的程序更加整潔和更具可讀性。json
咱們開始吧.. 🔥bash
首先建立一個 HelperServiceProvider.php 服務提供者文件:app
php artisan make:provider HelperServiceProvider
複製代碼
使用上面命令,你將在 app\Providers
文件中生成 HelperServiceProvider.php
composer
你能夠簡單的移除 boot()
方法,咱們在這兒不會使用它。ide
在 register()
方法中咱們添加如下代碼:函數
public function register()
{
foreach (glob(app_path('Helpers') . '/*.php') as $file) {
require_once $file;
}
}
複製代碼
這個循環將會遍歷 app/Heplers
目錄下的全部文件,你可能已經猜到了,如今你能夠在這個目錄下隨便建立文件,它們將會被加載到你的應用程序中,這些幫助函數在你的代碼的任何地方均可以被訪問(views, models, controllers...)ui
咱們還須要加載這個服務提供者,打開 config/app.php
,而後將 HelperServiceProvider
放在你的 AppServiceProvider
上面spa
...
App\Providers\HelperServiceProvider::class,
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
App\Providers\BroadcastServiceProvider::class,
...
複製代碼
如今讓咱們建立一個簡單的函數,在 app/Helpers
目錄中建立一個 Carbon.php
文件,文件中包含如下代碼:
<?php
/**
* Carbon helper
*
* @param $time
* @param $tz
*
* @return Carbon\Carbon
*/
function carbon($time = null, $tz = null)
{
return new \Carbon\Carbon($time, $tz);
}
複製代碼
你不須要添加任何命令空間。若是你想,你可使用 function_exists
檢測這個函數是否存在。
如今,你能夠在應用程序的任何你喜歡的位置使用幫助函數 carbon()
。如今,若是您須要另外一個返回特定格式的函數(僅針對本教程的用例),則能夠在同一文件(Carbon.php)中輸入該函數:
<?php
/**
* Carbon helper
*
* @param $time
* @param $tz
*
* @return Carbon\Carbon
*/
function carbon($time = null, $tz = null)
{
return new \Carbon\Carbon($time, $tz);
}
function carbonFormatted($time = null, $tz = null)
{
return carbon($time, $tz)->format('Y-m-d')
}
複製代碼
好的! 如今,您能夠開始使用本身的PHP文件填充 app / Helpers目錄,其中包含您常常使用的幫助程序 💪
注意:請記住,我是荷蘭人,英語不是個人母語,所以本文可能包含一些語法錯誤。