声明值ONCE以在多个控制器方法中使用 - Laravel 5.2

时间:2016-06-12 20:47:57

标签: laravel laravel-5 stripe-payments

我目前必须在每个控制器方法中声明我的Stripe api密钥,该方法将对Stripe进行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种方法正在这样做。我的问题是,有没有办法可以在某个地方声明密钥而不必在每个控制器方法中调用它?

1 个答案:

答案 0 :(得分:4)

是的,我会在AppServiceProvider中执行此操作。您可以在app/Providers/AppServiceProvider.php找到此信息。

将其粘贴在注册方法中:

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

在每次请求的bootstrap期间都会运行。

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

class PaymentController extends Controller { 

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

    public function addCard() {
        ...

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