2017-11-02 11 views
1

私はLaravelの新機能で、this answerを使用して自分のヘルパー機能のサービスプロバイダを実装しました。Laravel - サービスプロバイダのPHPスクリプトが必要です

それが推奨:しかし、メソッドを登録Laravel docs状態は唯一である必要があり、あなたの新しく生成された HelperServiceProvider.phpは、次のコード

require_once app_path('Helpers/AnythingHelper.php'); 

を追加するレジスタ機能に

物を容器に結びつけるために使用される:

前述のように、登録メソッド内では、 だけをサービスコンテナにバインドする必要があります。 は、登録メソッド内でイベントリスナー、ルート、またはその他の部分の 機能を登録しようとしないでください。

私の場合、アプリケーションはそのまま動作しますが、レジスタ機能のステートメントが必要です。私の質問は、コードを動作させるのではなく「ベストプラクティス」です。

質問:

(registerメソッド内のステートメントが必要です)これは良い/許容できるアプローチです、またはブート方法へのステートメントを必要と私はむしろ移動する必要がありますか?

答えて

1

あなたがここでの唯一の方法(ないクラス)に置く場合に推奨アプローチ:

  1. どこでも、あなたがこのようautoloadfilesキーにこのファイルを追加してくださいcomposer.json
  2. をしたいファイルを作成します。

    "autoload": { 
        // here other autoload things 
    
        "files": ["app/Helpers/AnythingHelper.php"] 
    }, 
    
  3. 実行composer dump-autoload`

  4. クラスでは

明らかにあなたが標準PSR-4のオートローディング

+0

を使用する必要がありますので、あなたは右、ヘルパー関数のようなもののために完全にサービスプロバイダーのアプローチを捨て、作曲を通してそれを処理するために言うだろうか? – Amade

+1

シンプルな機能を持つファイルがある場合は、サービスプロバイダを使用するポイントが表示されません。コンポーザーを使用してこれらのファイルを自動ロードすることができます。同じことがLaravelでヘルパーファイル用に行われます。 https://github.com/laravel/framework/blob/5.5/composer.jsonを見ると、このようにロードされた 'src/Illuminate/Foundation/helpers.php 'が表示されます –

+0

は意味があります、私は扱いますそれはコンポーザーを介して:)しかし、理論的には、私はそれを維持したいと思っているサービスを提供する必要がありますステートメントは、ブートメソッドに移動する必要があります?私はちょうど私が正しくこのドキュメントを理解していることを確認したい - (つまり、バインド、シングルトン、インスタンスなどのアプリケーションのメソッドを使用する)バインディング以外のものは、レジスタメソッドで大きな「いいえ」ではないでしょうか?デフォルトでは、何か他のものをブートメソッドに移動する必要がありますか? – Amade