将 Mailjet API v3 包装器集成为 Codeigniter 库

Integrating Mailjet API v3 wrapper as Codeigniter library

如何将 Mailjet API PHP wrapper 作为库集成到我的 Codeigniter 安装中?

是否像将 the repository 的内容放入 application/libraries/Mailjet 然后在 application/libraries 中创建一个 Mailjet.php 文件来初始化 Mailjet 一样简单,如下所示?

require 'Mailjet/vendor/autoload.php';

use \Mailjet\Resources;

$mj = new \Mailjet\Client(getenv('MJ_APIKEY_PUBLIC'), getenv('MJ_APIKEY_PRIVATE'));

如果我的方向正确,请告诉我。谢谢。

是的,您走对了路。但是您不需要创建 CI 库。在控制器中也使用 Mailjet 存储库。只需按照 CI docs.

中所述使用作曲家

If you want CodeIgniter to use a Composer auto-loader, just set $config['composer_autoload'] to TRUE or a custom path in application/config/config.php.

在 CodeIgniter 中使用 github 存储库的分步说明

  1. APPPATH.'config/config.php'file
  2. 中设置$config['composer_autoload'] = TRUE;
  3. 将需要 repositories/projects 的 composer.json 文件放在 APPPATH 位置
  4. 通过控制台使用 composer install 命令完成工作,这将使 vendor 和其他相关文件和文件夹在里面
  5. 在控制器或其他代码中需要时使用它,如下例所示

示例控制器Mailman.php

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

use \Mailjet\Resources;

class Mailman extends CI_Controller
{
    private $apikey = 'apy__key__here';
    private $secretkey = 'apy__secret__here';

    protected $mj = NULL;

    public function __construct()
    {
        // $this->mj variable is becoming available to controller's methods
        $this->mj = new \Mailjet\Client($this->apikey, $this->apisecret);
    }

    public function index()
    {
        $response = $this->mj->get(Resources::$Contact);

        /*
         * Read the response
         */
        if ($response->success())
            var_dump($response->getData());
        else
            var_dump($response->getStatus());
    }
}

如果您明确希望通过 CI 库使用 Mailjet(或任何其他)存储库,请查看 docs 如何创建自定义库并将上面的代码与其合并。我个人以这种方式使用存储库来避免不必要地加载和解析足够的库。