2016-06-12 3 views
1

現在、ストライプへのAPI呼び出しを行うすべてのコントローラーメソッドで、自分のStripe APIキーを宣言する必要があります。たとえば、複数のコントローラーメソッドで使用する値を1つ宣言 - Laravel 5.2

public function __construct() 
{ 
    \Stripe\Stripe::setApiKey(env('STRIPE_KEY')); 
} 

public function addCard() 
{ 
    Stripe::setApiKey(env('STRIPE_KEY')); 
} 

public function updateCard() 
{ 
    Stripe::setApiKey(env('STRIPE_KEY')); 
} 

public function deleteCard() 
{ 
    Stripe::setApiKey(env('STRIPE_KEY')); 
} 

私はこれを行う方法が10以上あるため、これは非常に面倒です。私の質問は、どこかでキーを宣言し、すべてのコントローラメソッドでキーを宣言する必要がない方法があるかどうかです。

答えて

4

あなたのAppServiceProviderでそれをやっています。これはapp/Providers/AppServiceProvider.phpにあります。

registerメソッドでそれをスティック:

public function register() 
{ 
    Stripe::setApiKey(env('STRIPE_KEY')); 
} 

すべての要求のためのブートストラップ時に実行されます。


また、コントローラのコンストラクタでこれを設定することもできます。これは、この1つのコントローラー内のすべてのアクションに対してのみ実行されます。

class PaymentController extends Controller { 

    public function __construct() { 
     Stripe::setApiKey(env('STRIPE_KEY')); 
    } 

    public function addCard() { 
     ... 

これはあまり望ましくないと主張したいと思いますが、サービスプロバイダは主に依存関係の配線を担当する必要があります。あなた次第。

+0

興味深い提案。 「毎回のリクエスト」によって、別のコントローラーの他のコントローラーメソッドが呼び出されたときにも実行されることを意味しますか? MyController @ myMethodと言ってください。 –

+0

グローバルブートストラッププロセスの一部として実行されます。あなたがこれが無駄であることを心配しているなら、しないでください。 [Stripeクラス](https://github.com/stripe/stripe-php/blob/master/lib/Stripe.php#L40)を見ると、文字通り変数にapiキーが格納されます。あらゆる要求に対してこれを行うことは無害で、必要なときにいつでも準備ができて便利です。 – jszobody

+0

コントローラーを1コントローラーに制限する方法を知りましたか?申し訳ありませんが、私はLaravelに新しいとhaventは本当にそれが提供しなければならないものを探検しました。 –

関連する問題