文章轉發自專業的Laravel開發者社區,原始連接: https://learnku.com/laravel/t...
你可能想建立一個在應用的任何地方均可以訪問的函數,這個教程將幫你實現 👏php
不少教程都會說,你在 composer.json
這個文件中經過添加一個自動加載的文件,就能夠實現這個需求。但我認爲這不是一個好的方式,當你在 helpers.php
文件中添加了更多的函數時,可讀性將變得不好。laravel
下面我將介紹一種方式,讓你能夠定義不少文件,來包含不一樣的函數。這將讓咱們的程序更加整潔和更具可讀性。json
咱們開始吧.. 🔥app
首先建立一個 HelperServiceProvider.php 服務提供者文件:composer
php artisan make:provider HelperServiceProvider
使用上面命令,你將在 app\Providers
文件中生成 HelperServiceProvider.php
ide
你能夠簡單的移除 boot()
方法,咱們在這兒不會使用它。函數
在 register()
方法中咱們添加如下代碼:ui
public function register() { foreach (glob(app_path('Helpers') . '/*.php') as $file) { require_once $file; } }
這個循環將會遍歷 app/Heplers
目錄下的全部文件,你可能已經猜到了,如今你能夠在這個目錄下隨便建立文件,它們將會被加載到你的應用程序中,這些幫助函數在你的代碼的任何地方均可以被訪問(views, models, controllers...)spa
咱們還須要加載這個服務提供者,打開 config/app.php
,而後將 HelperServiceProvider
放在你的 AppServiceProvider
上面code
... 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目錄,其中包含您常常使用的幫助程序 💪
注意:請記住,我是荷蘭人,英語不是個人母語,所以本文可能包含一些語法錯誤。