Composer

www.cetera.ru

Менеджер зависимостей

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

Возможности

Composer позволяет скачивать и обновлять библиотеки из своего официального репозитория packagist.org, с GitHub или Bitbucket, из любых репозиториев Git, Mercurial или SVN, из PEAR, а так же просто просто ZIP-архивы по произвольной ссылке.

 

После установки пакетов создается php-файл с правилами автозагрузки библиотек в ваш проект.

 

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

Как используется у нас

  1. Подгружаем все внешние библиотеки
  2. Не храним их в своем Git
  3. Все свои наработки, расширяющие функциональность CMS, автоматически подгружаем в проект с помощью Composer
{
  "repositories": [  //описываем нестандартный источник
    {
      "type": "package",
      "package": {
        "name": "PHPOffice/PHPExcel",
        "version": "1.8.0",
        "source": {
          "url": "https://github.com/PHPOffice/PHPExcel.git",
          "type": "git",
          "reference": "1.8.0"
        },
        "autoload": { "psr-0": { "PHPExcel": "Classes/" } }
      }
    }
  ],
  "require": {  //подключаем внешние библиотеки
    "PHPOffice/PHPExcel": "1.8.*",
    "pimple/pimple": "~3.0"
  },
  "autoload": { //автозагрузка локальных файлов
    "psr-0": {
      "CUserTypeBool": "lib/",
      "Cetera\\": "lib/"
    },
    "psr-4": {
      "MyProjectNameSpace\\": "app/"
    },
    "files": ["app/common.php"]
  }
}

Composer require

Ищем необходимую библиотеку на сайте https://packagist.org/ и подключаем ее в узел require с тем именем, что там написано.

Если библиотека не нашлась, то описываем ее в узле repositories, а дальше подключаем стандартным образом в require.

 

Например, Pimple:

Версии библиотек

Необходимо быть аккуратным с указанием версий подключаемых библиотек. Желательно допускать только минорные обновления для сохранения работоспособности всего остального проекта.

Инструкция по указанию версий.

Автозагрузка

  1. PSR-4
  2. PSR-0 @deprecated
  3. Classmap
  4. Файлы

Установка Composer

  1. Есть подробная инструкция
  2. Можно устанавливать глобально и локально
  3. При локальной установке позаботьтесь, чтобы composer.phar не попал в Git

Установка зависимостей


    php composer.phar install

    composer install

Выполнить команду в консоли в том месте, где расположен composer.json:

В случае глобальной установки:


    php composer.phar update

Обновление зависимостей:

Структура файлов

  1. composer.json
  2. /app - файлы проекта
  3. /lib - внутренние наработки Cetera Labs
  4. /vendor - папка, куда автоматически загрузятся все внешние библиотеки

Использование библиотек


    require 'vendor/autoload.php';

В 1С-Битрикс мы это делаем в init.php.

Спасибо

Made with Slides.com