在多控制器方法中使用一次声明值-Laravel 5.2

在多控制器方法中使用一次声明值-Laravel 5.2,laravel,laravel-5,stripe-payments,Laravel,Laravel 5,Stripe Payments,目前,我必须在每个控制器方法中声明我的条带api密钥,这些方法将对条带进行api调用。比如说 public function __construct() { \Stripe\Stripe::setApiKey(env('STRIPE_KEY')); } public function addCard() { Stripe::setApiKey(env('STRIPE_KEY')); } public function updateCard() { Stripe::se

目前,我必须在每个控制器方法中声明我的条带api密钥,这些方法将对条带进行api调用。比如说

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种方法可以做到这一点。我的问题是,有没有一种方法可以在某个地方声明一次密钥,而不必在每个控制器方法中调用它?

是的,我会在您的AppServiceProvider中这样做。您可以在app/Providers/AppServiceProvider.php中找到这一点

将其粘贴在寄存器方法中:

public function register()
{
    Stripe::setApiKey(env('STRIPE_KEY'));
}
它将在引导过程中为每个请求运行

或者,您可以在控制器的构造函数中设置此选项。这将导致它仅在此一个控制器中运行所有操作

class PaymentController extends Controller { 

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

    public function addCard() {
        ...
我认为这是不可取的,您的服务提供商应该主要负责连接您的依赖关系。由您决定。

是的,我会在您的AppServiceProvider中完成。您可以在app/Providers/AppServiceProvider.php中找到这一点

将其粘贴在寄存器方法中:

public function register()
{
    Stripe::setApiKey(env('STRIPE_KEY'));
}
它将在引导过程中为每个请求运行

或者,您可以在控制器的构造函数中设置此选项。这将导致它仅在此一个控制器中运行所有操作

class PaymentController extends Controller { 

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

    public function addCard() {
        ...

我认为这是不可取的,您的服务提供商应该主要负责连接您的依赖关系。由您决定。

有趣的建议。“每个请求”是指当调用其他控制器中的其他控制器方法时,它也会运行吗?说MyController@myMethod是的。它将作为全局引导过程的一部分运行。如果你担心这是浪费,不要担心。如果你看一下,它实际上只是将api键存储在一个变量中。对每个请求都这样做是完全无害的,而且只要你想随时准备好就很方便。你会知道一种方法将它限制为1个控制器吗?很抱歉,我是新来的Laravel,还没有真正探索它能提供什么。@ArvinFlores我刚刚用这个选项更新了我的答案。我也喜欢servicecontainer的答案,它只是出于某种原因让我讨厌,因为它会为每个请求运行。刚刚尝试了编辑后的答案,但由于未提供API密钥而导致条带服务器错误。有趣的建议。“每个请求”是指当调用其他控制器中的其他控制器方法时,它也会运行吗?说MyController@myMethod是的。它将作为全局引导过程的一部分运行。如果你担心这是浪费,不要担心。如果你看一下,它实际上只是将api键存储在一个变量中。对每个请求都这样做是完全无害的,而且只要你想随时准备好就很方便。你会知道一种方法将它限制为1个控制器吗?很抱歉,我是新来的Laravel,还没有真正探索它能提供什么。@ArvinFlores我刚刚用这个选项更新了我的答案。我也喜欢servicecontainer的答案,它只是出于某种原因让我讨厌,因为它会为每个请求运行。刚刚尝试了编辑后的答案,但由于未提供API密钥而导致条带服务器错误。