Codeigniter 2.0 third_party文件夹

时间:2011-03-09 15:39:05

标签: codeigniter

这是codeigniter 2.0中的third_party文件夹,以及如何使用它?

4 个答案:

答案 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 ,所以我做了以下事情:

  1. 更新了从dirname(__FILE__) . '/lib/dirname(__FILE__) . '/ init.php 引用,并将该文件与所有内容一起放在 third_party / stripe 文件夹中 lib 文件夹;
  2. 例如,创建 libraries / Stripe.php ;
  3. 这将是它的构造函数:

    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);
      }
    }
    
  4. 添加直接调用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;
    
  5. 在您的某个控制器上加载库并调用方法:

    $this->load->library('stripe');
    Stripe::create_customer($someones_email, $someones_token); // you can use the result
    
  6. 只需保留更新后的网址:CodeIgniter's Loader Class documentation