Richter web-программист: создание сайтов, написание интернет-магазинов, создание скриптов на PHP, MySQL, JavaScript. Системы управления сайтом, CMS.
English version

Статьи веб-программиста: Composer: создание своего проекта

Система построения сайта SBS "Web-Pro"
SBS Web-Pro Средство для создания и удобного управления сайтом, имеющее расширенные по сравнению с CMS (Content Management System) характеристики. Более 5 лет успешного использования. Подробнее
Пишите!
Telegram
@richter_a

Composer: создание своего проекта

К списку статей

В прошлой статье было рассказано, как пользоваться Composer и как установить желаемые пакеты. В этой статье создадим собственный проект так, чтобы он отвечал требованиям Composer, и чтобы другие разработчики или пользователи могли скачать и установить его.

  1. Cоздаем папку проекта и ставим в неё Composer (если он не установлен глобально).
  2. Выполняем команду инициализации проекта:

    php composer.phar init

    Вводим запрашиваемые параметры - там ничего критического и сложного. На выходе имеем файл composer.json в корне проекта. Этот файл описывает проект, его будет использовать Composer. При вводе параметров можно пока не определять зависимости (dependencies, они же пакеты) - это можно сделать позже, вручную отредактировав файл, или командой php composer.phar require < Vendor>/< Packet> так, как уже делали это при установке пакета.

  3. Далее нужно установить проект, выполнив:

    php composer.phar install

    Composer создаст в корне проекта папку vendor, в которой будут находиться файл autoload.php и папка composer - это служебные элементы Composer'а, и менять там ничего не нужно. В дальнейшем файлы в папке vendor/composer могут меняться при установке/удалении зависимостей - это так называемые файлы автозагрузки (см. автозагрузку классов PHP).
    Если до этого были указаны зависимости (пакеты), они будут скачаны (вместе со своими зависимостями) и помещены в папку vendor.
    В корне проекта будет создан файл composer.lock с информацией об установленных пакетах.

  4. Теперь уже можно использовать пакеты в своих скриптах так, как научились это делать в прошлой статье:

    require __DIR__ . '/vendor/autoload.php';

Файлы *.json при работе проекта не используются, они нужны только Composer'у при установке/обновлении/удалении пакетов.

При написании проекта свои скрипты можно класть куда угодно, создавать любую структуру папок, но не трогать папку vendor.

Имейте ввиду, что карта классов (в vendor/composer) занимает место в памяти при работе скрипта (например, при установке только phpunit с его зависимостями занимается 400 kB), причем это независимо от того, используете вы классы пакетов или нет. Так что злоупотреблять бездумным подключением множества пакетов не следует.

Распространение проекта

Итак, мы создали проект, подключили пакеты, написали желаемые скрипты - проект готов. Как его распространять? Его достаточно залить в Git-хранилище и на Packagist, и это мы уже умеем.

Важно то, что проект нужно передавать без папки vendor - фактически нужны только файл composer.json и собственно файлы (и, разумеется, папки) вашего проекта. Если передаете проект коллеге, желательно передать ещё composer.lock, чтобы в точности совпали версии установленных пакетов у вас и у него, что нужно при совместной разработке.

Полезно перед загрузкой проекта в Git-хранилище проверить composer.json командой:

php composer.phar validate

Установка проекта

При последующем разворачивании проекта на новом месте возможны 2 варианта:
  • Скачать файлы (например, если по какой-то причине вы получили их архивом) и выполнить:

    php composer.phar install

    Composer скачает все нужные пакеты и настроит автозагрузку.

  • Или выполнить (в пустой папке проекта):

    php composer.phar create-project < Vendor>/< Packet> < Path>

    В этом случае Composer найдет ваш проект, скачает и установит всё самостоятельно.

Теперь вы умеете создавать свои проекты и распространять их по правилам Composer.

Самое время узнать:
Как подключить в автозагрузку свои классы

© 2018 Richter
Распространение только с разрешения автора
Рейтинг: 6.8. Голосов: 5
(0) Добавить комментарий

Наверх