1

我构建了一个使用命名空间和 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;
4

2 回答 2

0

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

<?php
use \Stripe, \Stripe_Account;

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

或没有use声明:

<?php
$stripe = new \Stripe();
$stripe_account = new \Stripe_Account();
于 2013-11-18T11:14:18.817 回答
0

使用 composer 是最简单的方法(我保证!)

只需安装 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']);
?>
于 2015-07-01T17:34:12.090 回答