CodeIgniter - 如何在项目中加载 stripe-php 库?
Posted
技术标签:
【中文标题】CodeIgniter - 如何在项目中加载 stripe-php 库?【英文标题】:CodeIgniter - How to load stripe-php library in project? 【发布时间】:2014-07-15 23:55:19 【问题描述】:我正在使用 Stripe 的 php 库。 DL链接: https://code.stripe.com/stripe-php-latest.zip
我已经尝试过 codeigniters 加载库的方法,但仍然是服务器错误。我尝试将库放在application/libraries
中,然后使用$this->load->libraries('Stripe.php');
加载我的库
我已将所有大写字母更改为小写,但仍然出现错误。
以下是Stripe.php的代码
<?php
// Tested on PHP 5.2, 5.3
// This snippet (and some of the curl code) due to the Facebook SDK.
if (!function_exists('curl_init'))
throw new Exception('Stripe needs the CURL PHP extension.');
if (!function_exists('json_decode'))
throw new Exception('Stripe needs the JSON PHP extension.');
if (!function_exists('mb_detect_encoding'))
throw new Exception('Stripe needs the Multibyte String PHP extension.');
// Stripe singleton
require(dirname(__FILE__) . '/Stripe/Stripe.php');
// Utilities
require(dirname(__FILE__) . '/Stripe/Util.php');
require(dirname(__FILE__) . '/Stripe/Util/Set.php');
// Errors
require(dirname(__FILE__) . '/Stripe/Error.php');
require(dirname(__FILE__) . '/Stripe/ApiError.php');
require(dirname(__FILE__) . '/Stripe/ApiConnectionError.php');
require(dirname(__FILE__) . '/Stripe/AuthenticationError.php');
require(dirname(__FILE__) . '/Stripe/CardError.php');
require(dirname(__FILE__) . '/Stripe/InvalidRequestError.php');
require(dirname(__FILE__) . '/Stripe/RateLimitError.php');
// Plumbing
require(dirname(__FILE__) . '/Stripe/Object.php');
require(dirname(__FILE__) . '/Stripe/ApiRequestor.php');
require(dirname(__FILE__) . '/Stripe/ApiResource.php');
require(dirname(__FILE__) . '/Stripe/SingletonApiResource.php');
require(dirname(__FILE__) . '/Stripe/AttachedObject.php');
require(dirname(__FILE__) . '/Stripe/List.php');
// Stripe API Resources
require(dirname(__FILE__) . '/Stripe/Account.php');
require(dirname(__FILE__) . '/Stripe/Card.php');
require(dirname(__FILE__) . '/Stripe/Balance.php');
require(dirname(__FILE__) . '/Stripe/BalanceTransaction.php');
require(dirname(__FILE__) . '/Stripe/Charge.php');
require(dirname(__FILE__) . '/Stripe/Customer.php');
require(dirname(__FILE__) . '/Stripe/Invoice.php');
require(dirname(__FILE__) . '/Stripe/InvoiceItem.php');
require(dirname(__FILE__) . '/Stripe/Plan.php');
require(dirname(__FILE__) . '/Stripe/Subscription.php');
require(dirname(__FILE__) . '/Stripe/Token.php');
require(dirname(__FILE__) . '/Stripe/Coupon.php');
require(dirname(__FILE__) . '/Stripe/Event.php');
require(dirname(__FILE__) . '/Stripe/Transfer.php');
require(dirname(__FILE__) . '/Stripe/Recipient.php');
require(dirname(__FILE__) . '/Stripe/ApplicationFee.php');
现在如何在 codeigniter 中添加这个文件。包含的所有其他文件 该文件位于子目录 Stripe 中
【问题讨论】:
请提及您遇到的错误 是否有 CI 日志,以便您查看您遇到的具体错误?或者您可能需要检查您的 Apache 日志? CI 不能以这种方式工作,并且要包含其他库,您需要创建一个包装库/帮助程序来实例化它。这是一个如何使用不同类 github.com/hadiariawan/CodeIgniter-Dompdf-Library/blob/master/… 的示例,您可以将相同的原则应用于您正在尝试做的事情。 【参考方案1】:loading一个库时,第一个参数是类名,不是文件名。如果文件包含一个名为Stripe
的类,那么您可以通过调用来加载它:
$this->load->libraries('stripe');
注意,如果文件位于子目录中,则您需要包含相对于 libraries 目录的路径。
如果文件没有类,而是一组函数,那么它被认为是帮助程序,而不是库。您可以通过调用此函数来加载帮助程序,将不带扩展名的文件名作为第一个参数传递:
$this->load->helper('file_name')
查看您要使用的库,您可能需要将其调整为 CodeIgniter 库的形式。
如果您不想将其调整为 CodeIgniter 库,则没有什么可以阻止您使用 PHP 将其包含在内,而不是将其作为库加载:
require_once(APPPATH.'libraries/Stripe/lib/Stripe.php'); // Your path may be different
【讨论】:
我在我的问题中添加了 stripe.php 的代码,我需要将其包含在我的 Codeigniter 项目中。它不包含 classname 。事实上,它包括多个存在于名为 Stripe 的子目录中的文件。所以请告诉如何包含这个文件..... 您可以像这样包含require_once(APPPATH.'libraries/Stripe/lib/Stripe.php');
,而不是将其作为 CodeIgniter 库包含在内。 (见编辑。)以上是关于CodeIgniter - 如何在项目中加载 stripe-php 库?的主要内容,如果未能解决你的问题,请参考以下文章
我如何在控制器函数中加载目录作为视图:Codeigniter
如何在 codeigniter 4 中加载 css 或 js 文件?