Advertisement
  1. Code
  2. OpenCart

Интеграция внешних библиотек в OpenCart с помощью Composer

Scroll to top
Read Time: 5 min

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. Поэтому всегда хорошо запачкать в этом ваши руки, поскольку это становится стандартом во всех популярных фреймворках.

Всегда открыт для вопросов и предложений!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.