首页 > 解决方案 > 在 Laravel 中将 Braintree 从 Class 转换为实例接口,代码去哪了?

问题描述

所以我开发了一个界面并与 Braintree 合作,但他们已经更新了他们的 api 从类级别转到实例样式界面。他们给出了以下内容来展示新旧代码风格。问题是旧代码进入了 \app\Providers\AppServiceProvider.php 文件,我不知道新代码应该放在哪里。首先让我向您展示 Braintree 提供的代码示例。

AppServiceProvider 中的旧类级别样式

Braintree_Configuration::environment('sandbox');
Braintree_Configuration::merchantId('use_your_merchant_id');
Braintree_Configuration::publicKey('use_your_public_key');
Braintree_Configuration::privateKey('use_your_private_key');

新实例样式代码(此代码在哪里?)

$gateway = new Braintree_Gateway([
    'environment' => 'sandbox',
    'merchantId' => 'use_your_merchant_id',
    'publicKey' => 'use_your_public_key',
    'privateKey' => 'use_your_private_key'
]);

所以我有一个包含所有 Braintree API 调用的特征。例如,这是我在旧 Class 样式代码中使用的 trait 中的一个方法

public function btGetClientToken($customerID)
{
    return \Braintree_ClientToken::generate([
        "customerId" => $customerID,
        "merchantAccountId" => config('services.braintree.merchant_account_id')]);
}

这是新实例样式界面的相同方法

public function btGetClientToken($customerID)
{
    return $gateway()->clientToken()->generate([
        "customerId" => $customerID,
        "merchantAccountId" => config('services.braintree.merchant_account_id')]);
}

但当然问题是我不知道我应该把第一块代码放在哪里,我假设我应该创建一个全局可访问的变量($gateway)?如果我将第一个代码块添加到新方法的顶部,那么一切正常。

似乎我不应该在特征的每个方法中创建一个新实例。我试图从他们那里获得帮助,但似乎没有人熟悉 Laravel,而且他们的文档没有 Laravel 参考资料可以提供帮助。

TIA

标签: laravelgloballaravel-5.5braintree

解决方案


推荐阅读