От автора: сегодня Composer встроен почти во все фреймворки. Composer – удивительный инструмент управления зависимостями в PHP. OpenCart в этом плане не исключение. В этом уроке вы узнаете, как интегрировать внешние библиотеки с помощью Composer OpenCart.
Роль Composer в OpenCart
В OpenCart Composer поддерживается с версии 2.2. Скачайте последнюю версию. На момент написания статьи это 2.3.0.2. Установите и настройте последнюю версию, чуть позже она нам пригодится.
Взгляните на структуру папок, и вы заметите различия по сравнению с предыдущими версиями OpenCart. В рамках статьи нас интересуют composer.json и папка vendor.
Разберем файл composer.json.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
{ "name": "opencart/opencart", "type": "project", "description": "OpenCart", "keywords": ["opencart", "ecommerce", "framework", "opensource"], "homepage": "//www.opencart.com", "license": "GPL-3.0+", "require": { "cardinity/cardinity-sdk-php": "^1.0", "braintree/braintree_php" : "3.2.0", "leafo/scssphp": "0.0.12", "divido/divido-php": ">=1.1.1", "klarna/kco_rest": "^2.2", "php": ">=5.4.0" } } |
Синтаксис Composer не входит в нашу статью, но давайте быстро пробежимся глазами не специалиста.
Во-первых, сам проект OpenCart теперь доступен как библиотека, т.е. ее можно установить через Composer, не загружая ничего вручную с сайта. Во-вторых, библиотеке нужны другие сторонние библиотеки для корректной работы (divido, leafo и т.д.). Вам не нужно думать об этом, все скачается автоматически после запуска соответствующих команд Composer.
После установки новой библиотеки в файле composer.json появится соответствующая запись. Файлы библиотеки загружаются в папку vendor на том же уровне. Откройте папку, там вы увидите уже установленные библиотеки!
Папка vendor также содержит файл autoload.php – файл генерируется Composer и проверяет автоматическую загрузку библиотек в OpenCart. Можете сразу его использовать. При загрузке проекта OpenCart включает autoload.php.
Это был беглый обзор работы Composer в OpenCart. Для демонстрации мы установим популярную библиотеку PHPMailer через Composer.
Установка PHPMailer через Composer
PHPMailer – популярная PHP библиотека для отправки писем на электронную почту. Мы установим ее в OpenCart через Composer. Откройте терминал и измените директорию на ту, где папка vendor и файл composer.json лежат на одном уровне.
Запустите команду composer require phpmailer/phpmailer и нажмите enter! Если все пойдет хорошо, вы увидите примерно следующее.
1 2 3 4 5 6 7 8 9 10 11 12 |
$composer require phpmailer/phpmailer Using version ^5.2 for phpmailer/phpmailer ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) - Installing phpmailer/phpmailer (v5.2.16) Downloading: 100% phpmailer/phpmailer suggests installing league/oauth2-google (Needed for Google XOAUTH2 authentication) Writing lock file Generating autoload files |
Все! PHPMailer успешно скачан и установлен. Вот в чем сила Composer! Можете проверить, откройте папку vendor, библиотека будет установлена в папку phpmailer/phpmailer.
Откроем файл composer.json.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "name": "opencart/opencart", "type": "project", "description": "OpenCart", "keywords": ["opencart", "ecommerce", "framework", "opensource"], "homepage": "//www.opencart.com", "license": "GPL-3.0+", "require": { "cardinity/cardinity-sdk-php": "^1.0", "braintree/braintree_php" : "3.2.0", "leafo/scssphp": "0.0.12", "divido/divido-php": ">=1.1.1", "klarna/kco_rest": "^2.2", "php": ">=5.4.0", "phpmailer/phpmailer": "^5.2" } } |
Как видите, в раздел require добавлена строка «phpmailer/phpmailer»: «^5.2». Это значит, что для работы вашего проекта нужен PHPMailer.
Предположим, что вы работаете с другими разработчиками, и вам необходимо каждый день делиться работой. Для этого вам лишь нужно делить файл composer.json, все остальное возьмет на себя Composer! Другим разработчикам нужно лишь запустить команду composer update. Команда установит необходимые зависимости в их копии!
Мы установили PHPMailer через Composer, но как ее использовать? Не беспокойтесь, я и тут вам помогу. Этим мы займемся в следующем разделе!
Как использовать библиотеку PHPMailer
Вы уже сделали себе одолжение, установив PHPMailer через Composer. Ниже вы увидите, как легко использовать эту библиотеку в коде.
Для примера мы создадим довольно простой кастомный контроллер, который вы будете вызывать для отправки сообщений.
Откройте текстовый редактор и создайте example/email.php в папке catalog/controller со следующим кодом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php class ControllerExampleEmail extends Controller { public function index() { // just instantiate the mailer object, no need to include anything to use it. $objPhpMailer = new PHPMailer(); $objPhpMailer->From = "sender@example.com"; $objPhpMailer->FromName = "Sajal Soni"; $objPhpMailer->AddAddress("receiver@example.com"); $objPhpMailer->WordWrap = 50; $objPhpMailer->IsHTML(true); $objPhpMailer->Subject = "Subject"; $objPhpMailer->Body = "<h2>HTML Body</h2>"; $objPhpMailer->AltBody = "Plain Body"; if(!$objPhpMailer->Send()) { echo "Message could not be sent. <p>"; echo "Mailer Error: " . $objPhpMailer->ErrorInfo; exit; } echo "Message has been sent"; exit; } } |
Можете протестировать, для этого перейдите на своем сайте на страницу //your-opencart-site-url/index.php?route=example/email.
В методе index мы создали объект PHPMailer без каких-либо include, которые подключили бы необходимые классы PHPMailer, если бы мы не использовали Composer. Вы правильно поняли, OpenCart автоматически их загружает. Вспомните файл autoload.php в папке vendor, именно он делает всю магию!
Далее идут стандартные вещи, необходимые для отправки письма через PHPMailer. Я старался не усложнять пример, так как для обсуждения PHPMailer нужна отдельная статья!
Это было быстрое и простое знакомство с Composer в OpenCart, а также с тем, как с его помощью можно интегрировать внешние библиотеки.
Заключение
В этой статье мы лишь приоткрыли завесу Composer в OpenCart, и как с его помощью использовать сторонние библиотеки в проекте. Бесспорно, Composer – будущее инструментов управления зависимостями в PHP. Об этом инструменте необходимо знать, так как он становится стандартом во всех популярных фреймворках.
Автор: Sajal Soni
Источник: //code.tutsplus.com/
Редакция: Команда webformyself.