Папка Codeigniter 2.0 3rd_party - PullRequest
       0

Папка Codeigniter 2.0 3rd_party

21 голосов
/ 09 марта 2011

Что такое папка Third_party в Codeigniter 2.0 и как ее использовать?

Ответы [ 4 ]

16 голосов
/ 09 марта 2011

Пакеты являются новыми для CI2.0, которые допускают использование easy distribution of complete sets of resources in a single directory, содержат модели, библиотеки, вспомогательные средства и т. Д., Но их не следует путать с модулями, как Phil Sturgeon указывает весьма услужливо.

$this->load->add_package_path()

См. документы для получения дополнительной информации

7 голосов
/ 13 апреля 2013

Если ваш «код сторонней библиотеки» требует, чтобы один файл был «загружен», чтобы вы могли в полной мере использовать библиотеку, он должен находиться в каталоге library .Если ваш «код сторонней библиотеки» представляет собой папку, полную файлов, многие из которых могут быть «загружены» и использованы, то они должны находиться в вашем каталоге third_party .

Этомоя интерпретация документов CodeIgniter для класса загрузчика найдена здесь: https://www.codeigniter.com/user_guide/libraries/loader.html

Является ли моя интерпретация неверной?Если так, ЛМК!

1 голос
/ 04 августа 2013

В настоящее время принято использовать папку с именем vendor. "third_party" больше не используется.

0 голосов
/ 28 мая 2018

Как Джон объяснил в своем ответе , однофайловая библиотека может быть загружена путем помещения ее в папку библиотеки :

$this->load->library('my_app');

Несколько однофайловых библиотек могут быть загружены аналогично массиву:

$this->load->library(['email', 'table']);

Однако, если у вас есть папка , заполненная классами для загрузки, которые не связаны с CodeIgniter , вы все равно можете поместить их в папку third_party , но не использовать $this->load->add_package_path() (он ожидает структуру CI внутри нового пакета third_party , т.е. с моделями, конфигами, помощниками и т. Д.).

Я оставляю пример, Stripe API имеет папку lib и init.php , поэтому я сделал следующее:

  1. обновил init.php ссылки с dirname(__FILE__) . '/lib/ на dirname(__FILE__) . '/) и поместил файл в папку third_party / stripe вместе со всем содержимым lib папка;
  2. Создайте, например, библиотеки / 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, например ::1010 *

    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
    

Также оставляем обновленный URL: Документация по классу загрузчика CodeIgniter .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...