这是codeigniter 2.0中的third_party文件夹,以及如何使用它?
答案 0 :(得分:16)
软件包是CI2.0的新手,允许easy distribution of complete sets of resources in a single directory
,包含模型,库,帮助程序等......但不要与模块混淆,因为{{3}指出非常有帮助。
$this->load->add_package_path()
请参阅Phil Sturgeon了解更多
答案 1 :(得分:7)
如果您的“第三方库代码”要求“加载”单个文件以便您充分利用该库,那么它应该进入库目录。如果您的“第三方库代码”是一个充满文件的文件夹,其中许多文件可能已被“加载”并被使用,那么它应该放在 third_party 目录中。
这是我对此处的Loader类的CodeIgniter文档的解释:https://www.codeigniter.com/user_guide/libraries/loader.html
我的解释不正确吗?如果是这样LMK!
答案 2 :(得分:1)
目前的惯例是使用名为“vendor”的文件夹。 “third_party”不再常用。
答案 3 :(得分:0)
作为John explained in his answer,可以将单文件库放入 libraries 文件夹中加载
$this->load->library('my_app');
可以使用数组加载多个单文件库:
$this->load->library(['email', 'table']);
但是,如果您的文件夹中装满了与CodeIgniter无关的类,您仍然可以将它们放在 third_party 文件夹中,但是可以不要使用$this->load->add_package_path()
(它需要新的 third_party 包中的CI结构,即模型,配置,帮助等)。
我举个例子,Stripe API有一个 lib 文件夹和一个 init.php ,所以我做了以下事情:
dirname(__FILE__) . '/lib/
到dirname(__FILE__) . '/
的 init.php 引用,并将该文件与所有内容一起放在 third_party / stripe 文件夹中 lib 文件夹; 这将是它的构造函数:
public function __construct()
{
$this->CI =& get_instance();
require_once(APPPATH.'third_party/stripe/init.php');
\Stripe\Stripe::setApiKey($this->CI->config->item('stripe_key_secret'));
if(ENVIRONMENT === 'development'){
\Stripe\Stripe::setVerifySslCerts(false);
}
}
添加直接调用Stripe类的函数,例如:
public static function create_customer($email, $token) {
$stripe_result = FALSE;
try {
$stripe_result = \Stripe\Customer::create([
'email' => $email,
'description' => "Customer for $email",
'source' => $token // obtained with Stripe.js
]);
} catch(\Stripe\Error\Card $e) {
return 'Error ' . $e->getHttpStatus() . ': '.
$e->stripeCode . ' -> '.
var_export($e->getJsonBody()['error'], TRUE);
} catch (Exception $e) {
return 'Something else happened, completely unrelated to Stripe -> '.
var_export($e, TRUE);
}
return $stripe_result;
在您的某个控制器上加载库并调用方法:
$this->load->library('stripe');
Stripe::create_customer($someones_email, $someones_token); // you can use the result
只需保留更新后的网址:CodeIgniter's Loader Class documentation。