Як створити кастомний бібліотеки API в OpenCart

17

Від автора: в самому ядрі OpenCart вже є безліч функцій, однак найчастіше необхідно інтегрувати сторонню бібліотеку. У той же час, є концепція бібліотеки, яка забезпечує загальний набір OpenCart API для щоденних операцій, як наприклад, взаємодія з системою конфігурації або системою баз даних, робота з email і т. д. Сьогодні ми дізнаємося, як реалізувати свою кастомний бібліотеку в OpenCart.

У цій статті ми створимо кастомний бібліотеку, за допомогою якої ви зможете робити CURL запити. Постараємося не ускладнювати. Важливо зрозуміти концепцію, а реалізація може відрізнятися по складності.

Будемо використовувати останню версію OpenCart. Припускаю, що ви знайомі з модульною структурою OpenCart.

Що таке бібліотека в OpenCart?

Що ж таке бібліотека в OpenCart? Простою мовою, це набір скриптів, що забезпечує основний функціонал у фреймворку. В OpenCart всі бібліотеки знаходяться в папці system/library. Наприклад, вхідний запит обробляється бібліотекою Request, а для обробки відповіді є бібліотека Response. Аналогічно є бібліотеки для кешування, покупців, баз даних та систем конфігурації. Назвемо парочку.

Необхідні бібліотеки завантажуються в код контролера/моделі. Для завантаження будь-якої бібліотеки необхідно зробити щось типу:

Як створити кастомний бібліотеки API в OpenCart

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення

$cache = $this->load->library(‘cache’);

У наведеному вище прикладі ми завантажили бібліотеку cache. Тепер вам доступний об’єкт $cache, від якої ви можете викликати методи, визначені в цій бібліотеці. Як бачите, це дійсно гнучкий спосіб завантаження об’єктів.

Сьогодні ми реалізуємо бібліотеку curl, за допомогою якої ви зможете робити CURL виклики за допомогою самої бібліотеки. У контролері краще уникати дублювання коду, так як для кожного CURL запиту необхідно створити об’єкт і налаштувати загальні заголовки. Ми обернем код в загальну бібліотеку, щоб не дублювати його в модулях і мати можливість повторно використовувати його.

Перш ніж перейдемо до реалізації кастомних бібліотеки, давайте поглянемо на одну з бібліотек ядра OpenCart.

Вивчіть код бібліотеки ядра

У попередньому розділі ми говорили про бібліотеку кешування, давайте подивимося її код. Відкрийте файл system/library/cache.php в текстовому редакторі.

cache = new $class($expire);
} else {
exit(‘Error: Could not load driver cache’ . $driver . ‘ cache!’);
}
}
public function get($key) {
return $this->cache->get($key);
}
public function set($key, $value) {
return $this->cache->set($key, $value);
}
public function delete($key) {
return $this->cache->delete($key);
}
}

Все просто, правда? Простий клас з необхідними методами. Це дуже простий приклад, але він міг бути досить складним! Перегляньте ще пару бібліотек, щоб ознайомитись з концепцією.

Створення кастомний бібліотеки: curl

Ви ознайомилися з бібліотеками ядра, тепер давайте створимо свою! Створіть файл system/library/curl.php з таким кодом.

get(‘db’);
* $registry->get(‘cache’);
* $registry->get(‘session’);
* $registry->get(‘config’);
* and more…
*/
protected function __construct($registry) {
// load the «Log» library from the «Registry»
$this->logger = $registry->get(‘log’);
}
/**
* @param string $url Url
* @param array $params Key-value pair
*/
public function do_request($url, $params=array()) {
// log the request
$this->logger->write(«Ініціював CURL request for: {$url}»);
// init curl object
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// prepare post array if available
$params_string = «;
if (is_array($params) && count($params)) {
foreach($params as $key=>$value) {
$params_string .= $key.’=’.$value.’&’;
}
rtrim($params_string, ‘&’);
curl_setopt($ch,CURLOPT_POST, count($params);
curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string);
}
// execute request
$result = curl_exec($ch);
// close connection
curl_close($ch);
return $result;
}
}

Ми визначили клас Curl з корисними методами.

Метод get_instance дозволяє створювати об’єкт класу. Він також перевіряє, що в будь-який час у нас всього один екземпляр класу.

Далі ми визначаємо конструктор з аргументом $registry. Аргументи не потрібні, але для прикладу я його поставив, щоб показати, як завантажувати інші бібліотеки з допомогою об’єкта $registry. У нашому прикладі ми завантажуємо бібліотеку Log і призначаємо її на властивість logger. За допомогою цієї бібліотеки ми будемо логировать curl запити для налагодження!

Є метод do_request, який виконує всю важку роботу за нас! Він приймає два аргументи: $url зберігає URL, на який ми будемо робити curl запит, а $params зберігає необов’язковий масив параметрів, якщо знадобиться відправити POST запит з будь-якими даними. Далі дуже простий код: він робить curl запит і повертає відповідь!

Майже закінчили зі створенням кастомних бібліотеки. У наступному розділі подивимося її в дії.

Як використовувати нашу бібліотеку кастомний

У більшості випадків ви будете викликати бібліотеки з контролера. Давайте подивимося, як завантажувати і використовувати бібліотеку з контролера.

// load library curl
$this->load->library(‘curl’);
$obj_curl = Curl::get_instance($this->registry);
$result = $obj_curl->do_request($url);
$result = $obj_curl->do_request($url, $params); // in case of $params needed

Вираз $this->load->library(‘curl’) завантажує кастомний бібліотеку. В наступному виразі ми викликали метод get_instance і передали об’єкт $registry, як аргумент конструктора. Далі ми використовували метод do_request для здійснення curl запиту!

Як бачите, досить легко створити свою власну бібліотеку в OpenCart! Точно так само ви можете інтегрувати будь-яку сторонню бібліотеку в формат бібліотек OpenCart і використовувати її у всьому фреймворку.

Висновок

Сьогодні ми обговорили концепцію бібліотеки в OpenCart. Ми вивчили бібліотеки ядра і створили свою бібліотеку для curl. Сподіваюся, вам сподобалося! Діліться своїми думками і запитами в коментарях!

Як створити кастомний бібліотеки API в OpenCart

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення