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
- Установите Composer, если не установлен - Установка - Linux / Unix / OSX или Установка - Windows
- Установите API SendinBlue с Composer - Github: APIv3-php-library - Установка и использование
- добавлять
autoload.php
в вашем контроллере - см. предыдущий пример
Пожалуйста, добавьте сюда список ошибок, если у вас все еще есть проблемы.
У меня есть красивое решение для этого, и оно отлично работает для меня, и я надеюсь, что оно сработает и для вас. Я использую API-v3.
Что я сделал:
- Загрузил API через композитор на свой локальный ПК.
- Создал папку с именем «sendinblue» на сервере (где у нас есть папки ресурсов) и загрузил папку поставщика из загруженного API в эту папку.
- Создал библиотеку под названием «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();
}
}