Многие сайты/проекты, чтобы не изобретать велосипед удобнее делать уже на готовых платформах php – CMS (WordPress, Bitrix от 1С, Joomla, OpenCart, ImageCMS и т.п.). Ну, или же, для придания большего колорита и определённой независимости, на одном из фреймворков (Laravel, Symfony, CodeIgniter и т.п.).
Речь конечно же идёт о среде разработке с использование серверного языка программирования PHP.
Основное преимущество в использовании наиболее популярных CMS заключает в возможности расширения их функционала за счёт разработки собственных скриптов, подключения сторонних библиотек с интеграцией их в файловую среду самого движка.
Другими словами – разработали свой скрипт/программу на PHP, или взяли стронную библиотеку (других разработчиков) и интегрировали её в тело своего движка (CMS) для взаимодействия её с функционалом вашего проекта и возврата результата её работы в шаблон страницы CMS.
В данном посте речь пойдёт именно о том, как подключить стороннюю библиотеку, разработанную на PHP (стандарта Packagist) к своему проекту на CMS с помощью популярного менеджера зависимостей PHP – COMPOSER.
Чтобы понять, как можно настроить всё это взаимодействие, с учётом конкретной потребности разработчика в решении определённой задачи, приведём простой пример.
Так как практически все популярные CMS построены на подходах ООП (объектно-ориентированного программирования) и файловая структура их схожа, общие подходы в реализации данной задачи для всех CMS (WordPress, Bitrix, Joomla, Drupal и т.д. ) будут подобны.
У нас есть сайт на движке ImageCMS (фреймворк CodeIgniter) и необходимо реализовать такую простую задачку.
На своём сайте с помощью функционала движка (админ панели) создадим обычную страницу, на которой, создав предварительно дополнительные поля для загрузки двух изображений (через всю туже админку), выведем их в формате png, и уже на их основе сгенерируем одно изображение в формате gif (в двух вариациях).
Создание страницы и вывод исходных изображений на ней будет достигнуто с помощью стандартной административной процедуры управления движком(CMS), а вот в создании gif картинки (анимации) на этой же странице нам как раз поможет сторонняя библиотека.
В данном примере подключим необходимую библиотеку двумя способами, с выводом результата работы каждого из них в двух областях страницы:
- 1 – с помощью файла functions.php, находящегося в корне темы движка (используемого для расширения его функционала)
- 2 – созданной нами библиотеки lib_gif в теле самого фреймворка(codeigniter) движка(ImageCMS) (в папке application/ libraries)
Осталось найти нужную библиотеку на PHP для решения поставленной задачи.
Есть такой замечательный ресурс https://packagist.org, на котором разработчики всего мира размещают и делятся своими программными скриптами (библиотеками), облегчая тем самым процесс разработки другим программистам.
Packagist — это репозиторий пакетов Composer. Он позволяет находить пакеты и сообщает Composer, откуда взять код. Любой разработчик может использовать Composer для управления своим проектом или зависимостями библиотек.
Composer же, в свою очередь, представляет из себя популярный менеджер зависимостей PHP, который упрощает процесс установки и обновления зависимостей проекта (некоторый аналог NodeJS NPM).
Он способствует установке, через командную строку своего терминала/консоль, всех необходимых версии пакетов в соответствии с запросом разработчика. Кроме всего прочего, Composer часто используется для установки на своём локальном сервере новых проектов построенных на таких популярных фреймворках PHP, как Laravel и Symfony.
И так, заходим на сайт https://packagist.org и ищем что-нибудь похожее для решения нашей задачи – создание gif анимации.
Находим нужную нам библиотеку - pomirleanu/gif-create
Ознакамливаемся с инструкцией по её установке и использованию.
До того как приступим к установке pomirleanu/gif-create, нам необходимо сначала установить в нашу систему (в данном случае Windows) compser, для того чтобы обеспечить загрузку и подключение данной библиотеки в наш проект через командную строку.
Так как локальная среда разработки у нас на Оpen Server (OS), то composer уже установлен в систему по умолчанию вместе с OS.
Единственное что мы ещё сделаем, это добавим для своего удобства и возможности работы с ним не только через консоль OS, но и Visual Studio Code, который является нашим редактором кода (IDE - интегрированной средой разработки). Или, другими словами, подружим консоль VS Code и OpenServer.
Делаем в настройках OS следующее:
Если же ваша среда разработки не на OS (а, к примеру, на XAMPP, WAMP, или же отдельно подключаемом PHP и т.п.), то composer необходимо установить глобально. Достаточно скачать и запустить установщик для Windows.
Для проверки установленной версии composer в командной строке терминала введём:
composer –v
и получим всю служебную инвормацию по нему
Далее создадим папку app_packagist (название любое может быть задано) в корне проекта, в которую и загрузим необходимую библиотеку с помощью composer.
Заходим через консоль VS Code в данную папку и выполняем следующую команду:
composer require pomirleanu/gif-create
После чего в папке app_packagist будет создан:
- файл composer.json, где указан подключаемый пакет (название/версия).
- файл composer.lock, где указаны все установленные зависимости и их версии.
- и папка vendor с загруженными основными и зависимыми пакетами (библиотеками)
Если бы мы изначально в папке app_packagist создали файл composer.json и указали в нём конструкцию в виде объекта require:
и после этого сделали запрос:
composer install
то получили такой же результат.
По сути, тоже самое, что и с запросом composer require pomirleanu/gif-create, только при первом варианте файл composer.json создаётся автоматически, если до этого его в папке не было.
В папке vendor видим всё основные и вспомогательные пакеты необходимые для создания gif-анимации из изображений png.
Создаём страницу (my_page) своего сайта с помощью админ-панели CMS:
Цепляем шаблон вывода этой страницы к созданному файлу my_page.tpl, где выводим наши исходные изображения (/uploads/1.png и /uploads/2.png)
Посмотрим что у нас получилось.
Ниже, на той же странице, выведем результат работы подключаемой библиотеки pomirleanu/gif-create.
Для этого в файле созданного шаблона (my_page.tpl) нашей страницы напишем следующий код, который и будет отвечать за вывод анимации по двум вариантам.
1 – с помощью созданной функции gif в файле functions.php:
{site_url(gif($image_1,$image_2))} – url первой анимации
2 – с помощью созданной библиотеки lib_gif (в папке application/ libraries):
{$url_animated = $CI->load->library('lib_gif')->index($image_1,$image_2)}
{site_url($url_animated)} - url второй анимации
По сути, код идентичен внутри метода index().
Отличие первой анимации от второй заключается в том, что массив $frame, который является первым аргументом вызываемого метода (->create($frames, $durations)) объекта класса (new GifCreate\GifCreate()) в 1-ом способе включает в себя первым элементом url = /uploads/1/png, а во 2-м втором url = /uploads/2.png.
Поэтому чередование исходных изображений в сгенерированной анимации в 1-ом и 2-ом варианте у нас будет отличаться.
Вот таким образом можно настроить взаимодействие CMS с любой внешней библиотекой, установленной с помощью composer, в рамках своего проекта для синтеза, обработки и вывода определённых данных, в том числе на создаваемых страницах непосредственно самим движком (CMS).
Понимая, как использовать в своих проектах ту либо иную библиотеку из репозитория пакетов Composer, можно значительно упростить сам процесс разработки, тем более что сегодня большая часть всех сайтов/ресурсов, как-никак разрабатывается на уже готовых php платформах (CMS) .
Как подключить стороннюю библиотеку PHP с помощью COMPOSER к сайту на движке (CMS) - Как-то Так!