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