PHP Laravel-包含你本身的幫助函數

你可能想建立一個在應用的任何地方均可以訪問的函數,這個教程將幫你實現 👏php

不少教程都會說,你在 composer.json 這個文件中經過添加一個自動加載的文件,就能夠實現這個需求。但我認爲這不是一個好的方式,當你在 helpers.php 文件中添加了更多的函數時,可讀性將變得不好。json

下面我將介紹一種方式,讓你能夠定義不少文件,來包含不一樣的函數。這將讓咱們的程序更加整潔和更具可讀性。app

咱們開始吧.. 🔥composer

首先建立一個 HelperServiceProvider.php 服務提供者文件:ide

php artisan make:provider HelperServiceProvider

 

使用上面命令,你將在 app\Providers 文件中生成 HelperServiceProvider.php函數

你能夠簡單的移除 boot() 方法,咱們在這兒不會使用它。ui

在 register() 方法中咱們添加如下代碼:spa

1 public function register()
2 {
3 foreach (glob(app_path('Helpers') . '/*.php') as $file) {
4 require_once $file;
5 }
6 }

 

這個循環將會遍歷 app/Heplers 目錄下的全部文件,你可能已經猜到了,如今你能夠在這個目錄下隨便建立文件,它們將會被加載到你的應用程序中,這些幫助函數在你的代碼的任何地方均可以被訪問(views, models, controllers...)code

咱們還須要加載這個服務提供者,打開 config/app.php,而後將 HelperServiceProvider 放在你的 AppServiceProvider 上面orm

...
App\Providers\HelperServiceProvider::class,
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
App\Providers\BroadcastServiceProvider::class,
...

 


如今讓咱們建立一個簡單的函數,在 app/Helpers 目錄中建立一個 Carbon.php 文件,文件中包含如下代碼:

 1 <?php
 2 
 3 /**
 4 * Carbon helper
 5 *
 6 * @param $time
 7 * @param $tz
 8 *
 9 * @return Carbon\Carbon
10 */
11 function carbon($time = null, $tz = null)
12 {
13 return new \Carbon\Carbon($time, $tz);
14 }

 

你不須要添加任何命令空間。若是你想,你可使用 function_exists 檢測這個函數是否存在。

如今,你能夠在應用程序的任何你喜歡的位置使用幫助函數 carbon()。如今,若是您須要另外一個返回特定格式的函數(僅針對本教程的用例),則能夠在同一文件(Carbon.php)中輸入該函數:

 1 <?php
 2 
 3 /**
 4 * Carbon helper
 5 *
 6 * @param $time
 7 * @param $tz
 8 *
 9 * @return Carbon\Carbon
10 */
11 function carbon($time = null, $tz = null)
12 {
13 return new \Carbon\Carbon($time, $tz);
14 }
15 function carbonFormatted($time = null, $tz = null)
16 {
17 return carbon($time, $tz)->format('Y-m-d')
18 }

 

好的! 如今,您能夠開始使用本身的PHP文件填充 app / Helpers目錄,其中包含您常常使用的幫助程序 💪

相關文章
相關標籤/搜索