# Composer **Composer** - типичная система управления зависимости и их установки. Идея и реализация во многом копируют `nmp` и `bundler` а так же пакетные менеджеры развитых операционных систем. ## Что это и зачем. В условиях динамичного развития рынка ПО и Интернет, ПО обновляется часто - выходят те или иные багфиксы, минорные и мажорные релизы и т. д. Так же происходит с теми или иными библиотеками, которые используются в другом ПО. В свою очередь, библиотеки могут зависеть от других библиотек. ПО - штука хрупкая, и при любых несовместимостях в этих зависимостях всё может посыпаться. ## Composer решает эти проблемы :) В отличие от пакетных менеджеров, `composer` ставит пакеты только в папку проекта, хотя есть возможность и для глобальной установки. Таким образом каждый проект может иметь набор своих программ и их версий. ## `composer.json` Файл в формате `JSON`, сделанный по аналогии с `package.json` node.js-менеджера `npm`. В нём указываются зависимости для вашего проекта. ```json { "require": { "monolog/monolog": "1.0.*" } } ``` ## Установка ```bash php composer.phar install ``` При выполнении этой команды `composer` смотрит в файл и устанавливает все зависимости в папку `vendor` ## Autoload `composer` так же генерирует файлы для автоподключения библиотек: ```php require __DIR__ . '/vendor/autoload.php'; ``` после этого библиотеки доступны для использования в проекте. ## Документация https://getcomposer.org/doc/ # Yii Начнем с установки: ```bash composer global require "fxp/composer-asset-plugin:^1.2.0" composer create-project --prefer-dist yiisoft/yii2-app-basic basic ``` Для проверки используем встроенный веб-сервер PHP: ```bash cd basic/web php yii serve ``` Или, для Apache используем конфигурацию: ``` # Set document root to be "basic/web" DocumentRoot "path/to/basic/web" # use mod_rewrite for pretty URL support RewriteEngine on # If a directory or a file exists, use the request directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward the request to index.php RewriteRule . index.php # ...other settings... ```