Почти каждый фреймворк в настоящее время имеет встроенную поддержку Composer, потрясающего инструмента управления зависимостями в PHP, и OpenCart не является исключением. В этом руководстве вы узнаете, как использовать Composer для интеграции внешних библиотек в OpenCart.
Роль композитора в OpenCart
С момента появления OpenCart 2.2 поддерживается рабочий процесс на основе Composer. Так что дерзайте и берите последнюю версию OpenCart; на момент написания статьи это 2.3.0.2. Убедитесь, что вы установили и настроили последнюю загруженную версию, так как она будет полезна позже в этой статье.
Изучите структуру каталогов, и вы заметите определенные различия по сравнению с более ранними версиями OpenCart. В контексте этой статьи интересными кандидатами являются файл composer.json и каталог vendor .
Давайте быстро пройдемся по файлу composer.json .
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
{
«name»: «opencart/opencart»,
«type»: «project»,
«description»: «OpenCart»,
«keywords»: [«opencart», «ecommerce», «framework», «opensource»],
«homepage»: «http://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! Предполагая, что все идет хорошо, это должно выглядеть следующим образом.
|
01
02
03
04
05
06
07
08
09
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, чтобы посмотреть, как он выглядит.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
{
«name»: «opencart/opencart»,
«type»: «project»,
«description»: «OpenCart»,
«keywords»: [«opencart», «ecommerce», «framework», «opensource»],
«homepage»: «http://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»
}
}
|
Как видите, запись "phpmailer/phpmailer": "^5.2" добавлена в раздел require . Таким образом, это означает, что ваш проект требует PHPMailer для правильной работы.
Предположим, вы работаете с другими разработчиками и должны регулярно делиться своей работой. В этом случае вам просто нужно поделиться с ними файлом composer.json, а остальное будет обработано самим Composer! Им просто нужно запустить команду composer update , и это должно позаботиться об установке необходимых зависимостей в их копии!
Теперь мы установили PHPMailer с помощью Composer, но как его использовать? Не волнуйтесь, я не оставлю вас так скоро — это точно рецепт нашего следующего раздела!
Как использовать библиотеку PHPMailer?
Вы уже сделали себе одолжение, используя Composer для установки библиотеки PHPMailer, и вы увидите это в этом разделе, когда мы рассмотрим, насколько просто использовать его в коде.
В качестве примера мы создадим довольно простой пользовательский файл контроллера, который вы могли бы вызвать для отправки электронного письма.
Откройте ваш любимый текстовый редактор и создайте example/email.php в catalog/controller со следующим содержимым.
|
01
02
03
04
05
06
07
08
09
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: » .
exit;
}
echo «Message has been sent»;
exit;
}
}
|
Вы можете проверить это, зайдя на ваш сайт через http: //your-opencart-site-url/index.php? Route = example / email .
В методе index вы можете видеть, что мы создали экземпляр объекта PHPMailer без каких-либо операторов включения, которые включали бы необходимые классы PHPMailer, если бы мы не использовали рабочий процесс на основе Composer. Вы правильно поняли, он автоматически загружается самой OpenCart. Напомним, что autoload.php в каталоге vendor делает всю магию!
Далее следует довольно стандартный материал, необходимый PHPMailer для отправки электронной почты. Конечно, я старался сделать пример как можно более простым, поскольку обсуждение PHPMailer требует отдельной статьи!
Итак, это было быстрое и простое введение в то, как вы можете использовать Composer с OpenCart для интеграции внешних библиотек.
Вывод
В этой статье мы только коснулись поверхности рабочего процесса на основе Composer в OpenCart для использования сторонних библиотек в вашем проекте. Не говоря уже о том, что Composer — это будущее инструментов управления зависимостями в PHP. Так что всегда хорошо запачкать руки, так как это становится стандартом во всех популярных фреймворках.
Запросы и предложения всегда приветствуются!