PHP中带名称空间的条带支付

rpppsulh  于 2023-02-03  发布在  PHP
关注(0)|答案(2)|浏览(220)

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

efzxgjgh1#

使用composer是最简单的方法(我保证!)
只需安装composer然后安装stripe,一旦你安装好了,只需浏览到你的项目文件夹并运行composer install,这将安装所需的依赖项,并将composer放在一个名为vendor的文件夹中。
然后你只需要一个autoload.php文件就可以加载stripe,而不用使用命名空间。这里是一个完整的示例块,我grabbed from here

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

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

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

mpbci0fu2#

您可以使用\来指定您正在指定的类名是完全限定名称空间(FQNS),例如:

<?php
use \Stripe, \Stripe_Account;

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

或不使用use语句:

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

相关问题