繁体   English   中英

带命名空间的PHP中的条带化付款

[英]Stripe Payments in PHP With Namespaces

我构建了一个使用名称空间和PSR-0自动加载的PHP应用程序。 在尝试实现Stripe库时,我发现它似乎无法加载类,因为它们没有命名空间。 如果我手动包含了文件,是否可以不自动加载?

// Get Stripe Library
require_once(App\App::$APP_PATH . "/Extensions/Stripe.php");

// Set Key
Stripe::setApiKey($stripe['secret_key']);

在示例中设置密钥失败并出现致命错误,因为它认为Stripe类存在于当前文件的命名空间中。

我发现如果我添加一个use Stripe; 行在我的命名空间声明下面,它将起作用,但随后在Stripe库中的下一个类上失败。

我真的要添加一个Use Stripe, Stripe_Customer, Stripe_xyz...; 行以使其正确加载文件(有超过25个文件)还是有更好的方法?

[ 编辑 ]

在我听说是否有更好的方法之前,我已经做到了:

// Import Non-Namespaced Stripe Library
use Stripe, Stripe_Account, Stripe_ApiConnectionError, Stripe_ApiError, Stripe_ApiRequestor, Stripe_ApiResource, Stripe_AuthenticationError;
use Stripe_Card, Stripe_CardError, Stripe_Charge, Stripe_Coupon, Stripe_Customer, Stripe_Error, Stripe_Event, Stripe_InvalidRequestError;
use Stripe_Invoice, Stripe_InvoiceItem, Stripe_List, Stripe_Object, Stripe_Plan, Stripe_Recipient, Stripe_SingletonApiResource;
use Stripe_Stripe, Stripe_Token, Stripe_Transfer, Stripe_Util;

您可以使用\\来指定您所指定的类名是FQNS,例如:

<?php
use \Stripe, \Stripe_Account;

$stripe = new Stripe();
$stripe_account = new Stripe_Account();

或没有use声明:

<?php
$stripe = new \Stripe();
$stripe_account = new \Stripe_Account();

使用作曲家是最简单的方法(我保证!)

只需安装composer ,然后安装stripe即可 安装完这些文件后,只需浏览到项目的文件夹并运行composer install 这将安装所需的依赖项,并将composer放在一个名为vendor的文件夹中。

然后,您只需要autoload.php文件即可加载条带,而无需使用命名空间。 这是我从这里获取的完整示例块。

<?php
require_once('vendor/autoload.php');

$stripe = array(
  "secret_key"      => "sk_test_BQokikJOvBiI2HlWgH4olfQ2",
  "publishable_key" => "pk_test_6pRNASCoBOKtIshFeQd4XMUh"
);

\Stripe\Stripe::setApiKey($stripe['secret_key']);
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM