我正在使用Codeigniter框架,并尝试与SendInBlue的PHP API集成。他们的PHP documentation并不是很有帮助,Github上的设置说明也不清楚。
医生说“下载文件并包含autoload.php”:
require_once('/path/to/APIv3-php-library/vendor/autoload.php');
但是我在任何地方都找不到autoload
,而且我不确定如何在CI结构中包括它。
更新:
我联系了Sendinblue支持人员,他们没有针对CI用户的任何安装教程。我尝试使用Compiler,并创建了文件夹结构,但是在将其与CI集成时仍然遇到问题。我将所有文件夹都放在库中,但未正确加载,并抱怨不存在自动加载类。
答案 0 :(得分: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 - Getting Started的指南进行操作
如果收到错误,则表明SendInBlue的结构不正确。我建议您使用Composer
autoload.php
-请参见前面的示例如果仍有问题,请在此处添加错误列表。
答案 1 :(得分:0)
我有一个很好的解决方案,它对我来说很好用,我希望它也对你有用。 我正在使用 API-v3。
我所做的是:
这是我的库结构:
<?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();
}
}