SendInBlue PHP API с Codeigniter

Я использую платформу Codeigniter и пытаюсь интегрировать ее с PHP API SendInBlue. Их документация по PHP не очень полезна, и инструкции по установке на Github также не ясны.

В документе сказано: "Загрузите файлы и включите autoload.php":

require_once('/path/to/APIv3-php-library/vendor/autoload.php');

Но я не могу найти autoload в любом месте, и я не совсем уверен, как включить это в мою структуру CI.

Обновить:

Я связался со службой поддержки Sendinblue, и у них нет руководства по установке для пользователей CI. Я попытался использовать компилятор и создал структуру папок, но у меня все еще есть проблемы с интеграцией с CI. Я поместил все папки в свои библиотеки, но он не загружен правильно и жалуется на то, что класс автозагрузки не существует.

Композитор результат

2 ответа

Решение

Чтобы получить autoload.php, вам нужно использовать Composer. Это разрешит все зависимости и установит / обновит их для вас.

Если у вас уже есть вся структура папок SendInBlue API в расположении библиотеки, вы можете добавить ее только в свой контроллер до class My_Class ... линия require_once (APPPATH . 'vendor/autoload.php');

например.

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

// include manually module library - SendInBlue API
require_once (APPPATH . 'vendor/autoload.php');

class My_Class extends CI_Controller {
....

После этого вы можете следовать руководству от Github: APIv3-php-library - Начало работы

Если вы получаете ошибки, это означает, что структура вашего SendInBlue плохая. Я рекомендую вам использовать Composer

  1. Установите Composer, если не установлен - Установка - Linux / Unix / OSX или Установка - Windows
  2. Установите API SendinBlue с Composer - Github: APIv3-php-library - Установка и использование
  3. добавлять autoload.php в вашем контроллере - см. предыдущий пример

Пожалуйста, добавьте сюда список ошибок, если у вас все еще есть проблемы.

У меня есть красивое решение для этого, и оно отлично работает для меня, и я надеюсь, что оно сработает и для вас. Я использую API-v3.

Что я сделал:

  1. Загрузил API через композитор на свой локальный ПК.
  2. Создал папку с именем «sendinblue» на сервере (где у нас есть папки ресурсов) и загрузил папку поставщика из загруженного API в эту папку.
  3. Создал библиотеку под названием «Sendinblue.php» и добавил сюда все необходимые функции. Теперь я могу использовать эту библиотеку, как и другие библиотеки.

Это моя структура библиотеки:

      <?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Sendinblue{
    public $config;
    public $apiInstance;
    public function __construct(){      
        require_once('sendinblue/vendor/autoload.php');
        $this->config = SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', '');
        $this->apiInstance = new SendinBlue\Client\Api\ContactsApi(
            new GuzzleHttp\Client(),
            $this->config
        );      
    }

    public function get_contact_info($data){
        $identifier = $data['email'];
        try {
          return $result = $this->apiInstance->getContactInfo($identifier);
        } catch (Exception $e) {
          return 'Exception when calling ContactsApi->getContactInfo: '.$e->getMessage();
        }
    }
    
    public function create_contact($data){
        $createContact = new \SendinBlue\Client\Model\CreateContact();
        $createContact['email'] = $data['email'];
        $createContact['listIds'] = [2];
        try {
          return $result = $this->apiInstance->createContact($createContact);
        } catch (Exception $e) {
          return $e->getCode();
        }
    }
Другие вопросы по тегам