php - ファサードではなくLaravelでヘルパーメソッドを作成する方法



laravel-5.1 helper (2)

Laravel 5.1でヘルパーメソッドを作成する方法に関する多くの質問を読みました。 しかし、私はファサードを介してこれを達成したくありません。

HelperClass::methodName();

これらのメソッドと同じようにヘルパーメソッドを作成したい Laravel Helper Methods like:

myCustomMethod();

ファサードにしたくありません。 これは可能ですか? どうやって?


Answer #1

「Laravelの方法」に進みたい場合は、カスタムヘルパーを使用して helpers.php ファイルを作成できます。

if (! function_exists('myCustomHelper')) {
    function myCustomHelper()
    {
        return 'Hey, it\'s working!';
    }
}

次に、このファイルを何らかのディレクトリに配置し、このディレクトリをアプリの composer.json autoloadセクションに追加します。

"autoload": {
    ....
    "files": [
        "app/someFolder/helpers.php"
    ]
},

composer dumpauto コマンドを実行すると、ヘルパーはLaravelのようなすべてのアプリで動作します。

さらにサンプルが必要な場合は、 /vendor/laravel/framework/Illuminate/Support/helpers.php 元のLaravelヘルパーを /vendor/laravel/framework/Illuminate/Support/helpers.php


Answer #2

まず、アプリディレクトリに Helpers というフォルダーを作成しました。 次に、Helpersフォルダー内に、追加したい機能のファイルを追加しました。 複数のファイルを含むフォルダーを作成すると、1つの大きなファイルが長くなりすぎて管理できなくなることを回避できます。

次に、artisanコマンドを実行して HelperServiceProvider.php を作成しました。

artisan make:provider HelperServiceProvider registerメソッド内にこのスニペットを追加しました

public function register()
{
    foreach (glob(app_path().'/Helpers/*.php') as $filename){
        require_once($filename);
    }
}

最後に、プロバイダアレイの config/app.php にサービスプロバイダを登録します

'providers' => [
    'App\Providers\HelperServiceProvider',
]

その後、 composer dump-autoload を実行する必要があり、変更はLaravelに表示されます。

これで、 Helpers ディレクトリ内のすべてのファイルがロードされ、使用できる状態になります。

これがうまくいくことを願っています!





helper