问题
How can I integrate the Mailjet API PHP wrapper into my Codeigniter installation as a library?
Is it as simple as placing the contents of the repository into application/libraries/Mailjet
and then creating a Mailjet.php
file in application/libraries
which initializes Mailjet like shown below?
require 'Mailjet/vendor/autoload.php';
use \Mailjet\Resources;
$mj = new \Mailjet\Client(getenv('MJ_APIKEY_PUBLIC'), getenv('MJ_APIKEY_PRIVATE'));
Please let me know if I'm on the right track. Thanks.
回答1:
Yes, you are on right track. But you don't need to create CI library. Use Mailjet
repository library in controller as well. Just use composer as stated in 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.
Step by step instruction for using github repository in CodeIgniter
- Set
$config['composer_autoload'] = TRUE;
inAPPPATH.'config/config.php'
file - Put
composer.json
file with wanted repositories/projects inAPPPATH
location - Do the job with
composer install
command through console which will makevendor
and other related files and folders inside - Use it when needed in controller or in other code as shown in example bellow
example controller 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());
}
}
If you explicitly want to use Mailjet (or any other) repository through CI library, check in docs how to create custom library and merge this code above with it. Personaly I use repositories this way to avoid unnecessarily loading and parsing sufficient libraries.
来源:https://stackoverflow.com/questions/38813987/integrating-mailjet-api-v3-wrapper-as-codeigniter-library