В настоящее время при разработки современных приложений используют пакетные менеджеры для управления зависимостями. При разработке на PHP используют Composer. Если вы PHP-разработчик то вы либо уже используете Composer, либо уже что-то слышали о нём. А если не слышали, то вам будет интересно и полезно прочитать данную статью. В статье будут показаны практические примеры с приложенными скриншотами и листингом кода.
Пакетные менеджеры упрощают установку и обновление сторонних библиотек, от которых зависит ваш проект. Они позволяют установить и подключить стороннюю библиотеку одной командой в консоли, после чего вы сразу же сможете использовать библиотеку (набор классов) в своем коде.
Composer — это пакетный менеджер, который предоставляет средства по управлению зависимостями и управлением автозагрузкой в PHP-приложении. Пакеты устанавливаются внутрь вашего проекта и доступны только в нём.
Установка Composer
Официальная страница, на которой вы можете найти информацию по установке Composer, находится здесь. Однако, если вы используете ОС на базе GNU/Linux, то проще всего установить Composer с помощью пакетного менеджера вашей операционной системы. Например для Ubuntu:
sudo apt install composer
Для Windows-пользователей придется воспользоваться инструкцией, ссылка на которую была дана выше.
Использование Composer
Если вы хотите использовать сторонние библиотеки, то при создании проекта на PHP или в уже готовом проекте вам необходимо инициализировать Composer для данного проекта. Инициализация всего лишь предполагает создание файла composer.json в корне вашего проекта с нужными вам параметрами. Проще всего это сделать в автоматизированном режиме командой composer init находясь в корневой директории вашего проекта
composer init
Далее вы перейдёте в интерактивный режим генерации package.json, в котором система вам задаст несколько следующих вопросов:
Package name — название вашего проекта(пакета). Обычно пишется в формате <vendor>/<package>, где vendor — название организации или разработчика, а package — название проекта или библиотеки.
Description — описание приложения.
Author — автор проекта. Обычно предлагает по умолчанию ваши данные из Git. примерный формат Nikolay Sergeychuk <nicknixer@gmail.com>
Далее задаст еще несколько вопросов, которые тоже можно просто пропустить, и предоставит листинг готового package.json.
Для примера я создам директорию для проекта и первым делом инициализирую в нём Composer
Теперь в проекте есть файл package.json, в который мы можем добавлять списо зависимостей.
Зависимости бывают двух типов: обычные и девелоперские.
Обычные зависимости — это зависимости, которые будут использоваться в исходном коде проекта и необходимы для его работы. К нип относятся различные подключаемые и используемые библиотеки.
Девелоперские зависимости — зависимости, которые нужны лишь на этапе написания кода и не нужны в продакшене. Например библиотеки для тестирования, на продакшене они совсем необязательны.
Для добавления зависимости к проекту можно использовать команду следующего вида
composer require somepackage/somepackage:someversion
Например нам необходимо в проекте сгенерировать файл для Excel, для этого нам нужно было бы разобраться как устроены такие файлы и написать код, который будет создавать такой файл — это всё очень долго. С Composer мы можем просто найти готовую билбиотеку, подключить её и использовать удобный API для создания таких файлов.
Давайте подключим такую библиотеку, для примера возмём PHPExcel. Найти библиотеки можно на сайте https://packagist.org/
composer require PHPOffice/PHPExcel
После чего Composer скачает данную библиотеку и пропишет зависимость в package.json
Содержимое package.json изменилось, а в корне проекта появилась директория vendor с файлами установленной библиотеки. При переносе исходного кода, например при использовании системы контроля версий (Git etc.), совсем необязательно тянуть с собой директорию vendor. Достаточно переностить проект без нее, а затем выполнять composer install в корне проекта. Composer скачает и установит пакеты, прописанные в package.json
Если вы хотите обновить ваши пакеты до совместимых версий выше, то используйте команду composer update
Использование подключенных пакетов
Для использования установленных Composer’ом библиотек, необходимо добавить автозагрузку. В современных приложениях используется паттерн front controller, он позволяет иметь единую точку доступа в приложение. То есть все запросы к приложению заходят в него, а он определяет каким контроллером должен формироваться респонс. Если в вашем приложении такого нет, то страшного нет ничего, вам просто придётся подключать файл автозагрузки во всех местах, где вы собираетесь использовать установленные библиотеки.
Например, у меня приложение состоит из одного файла — index.php, автозагрузку мне необходимо написать в нём.
index.php с подключенной автозагрузкой выглядит следующим образом
1 2 3 |
<?php require_once 'vendor/autoload.php'; |
Всё, везде ниже можно теперь использовать подключенные библиотеки.
Давайте воспользуемся установленной библиотекой и напишем приложение, которое сгенерирует файл для Excel с записю Hello, world! в первой ячейке.
Вдаваться в подробни как работать с PHPExcel не будем, т.к. это уже было описано в статье использование PHPExcel библиотеки, поэтому сразу приведу код файла index.php
1 2 3 4 5 6 7 8 9 10 11 |
<?php require_once 'vendor/autoload.php'; $document = new \PHPExcel(); $sheet = $document->setActiveSheetIndex(0); $sheet->setCellValueByColumnAndRow(0, 1, 'Hello, world!'); $objWriter = \PHPExcel_IOFactory::createWriter($document, 'Excel5'); $objWriter->save("Hello.xls"); |
Как видите, в коде мы используем классы, предоставленные библиотекой PHPExcel.
Запустим скрипт командой
php index.php
Он отработает и создаст файл Hello.xls, открыв который, можно обнаружить следующее
Composer значительно упрощает разработку, вам нет необходимости скачивать откуда-то готовые библиотеки и скрипты, а затем подключать их с помощью include. Composer всё делает за вас сам. При этом, при переносе кода вашего проекта, вам не нужно тянуть готовые библиотеки, вы можете перенести только свой код, а затем просто установить эти библиотеки с помощью Composer.
Надеюсь статья оказалась вам полезной и вы узнали о Composer и теперь облегчите себе жизнь, применяя его.