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

Declare value ONCE to use in multiple controller methods - Laravel 5.2

我目前必须在每个将对 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 种方法在执行此操作。我的问题是,有没有一种方法可以在某处声明一次密钥,而不必在每个控制器方法中调用它?

是的,我会在您的 AppServiceProvider 中完成。您可以在 app/Providers/AppServiceProvider.php.

找到它

在注册方法中粘贴:

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

每个请求 bootstrap 期间 运行。


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

class PaymentController extends Controller { 

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

    public function addCard() {
        ...

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