SendInBlue PHP API 与 Codeigniter

SendInBlue PHP API with Codeigniter

我正在使用 Codeigniter 框架并尝试与 SendInBlue 的 PHP API 集成。他们PHP documentation is not super helpful and the setup instructions on Github也不清楚

文档对 "Download the files and include autoload.php" 说:

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

但我在任何地方都找不到 autoload,我不确定如何将其包含在我的 CI 结构中。

更新:

我联系了 Sendinblue 支持,他们没有任何 CI 用户的安装教程。我尝试使用 Compiler,并创建了文件夹结构,但我在将它与 CI 集成时仍然遇到问题。我将所有文件夹放在我的库中,但未正确加载并抱怨自动加载 class 不存在。

要获得 autoload.php,您需要使用 Composer。这将为您解决所有依赖关系并install/update它们。

如果您已经在库位置拥有整个 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 - Getting Started

中的指南进行操作

如果你得到错误,意味着你的 SendInBlue 的结构是错误的。我建议您使用 Composer

  1. 如果未安装 Composer,请安装 - Installation - Linux / Unix / OSX or Installation - Windows
  2. 使用 Composer 安装 SendinBlue 的 API - Github: APIv3-php-library - Installation & Usage
  3. 在您的控制器中添加 autoload.php - 请参阅前面的示例

如果您仍有问题,请在此处添加错误列表。

我有一个很好的解决方案,对我来说效果很好,我希望它也对你有用。 我正在使用 API-v3.

我做的是:

  1. 在我的本地 PC 上通过 composer 下载了 API。
  2. 在服务器上创建了一个名为“sendinblue”的文件夹(我们有 assets 文件夹)并从下载的 API 上传 vendor 文件夹 在此文件夹内。
  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();
        }
    }