Статьи

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

Почти каждый фреймворк в настоящее время имеет встроенную поддержку Composer, потрясающего инструмента управления зависимостями в PHP, и OpenCart не является исключением. В этом руководстве вы узнаете, как использовать Composer для интеграции внешних библиотек в 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 — это популярная библиотека 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, но как его использовать? Не волнуйтесь, я не оставлю вас так скоро — это точно рецепт нашего следующего раздела!

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

Запросы и предложения всегда приветствуются!