composer_yii.md 3.1 KB

Composer

Composer - типичная система управления зависимости и их установки. Идея и реализация во многом копируют nmp и bundler а так же пакетные менеджеры развитых операционных систем.

Что это и зачем.

В условиях динамичного развития рынка ПО и Интернет, ПО обновляется часто - выходят те или иные багфиксы, минорные и мажорные релизы и т. д. Так же происходит с теми или иными библиотеками, которые используются в другом ПО. В свою очередь, библиотеки могут зависеть от других библиотек. ПО - штука хрупкая, и при любых несовместимостях в этих зависимостях всё может посыпаться.

Composer решает эти проблемы :)

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

composer.json

Файл в формате JSON, сделанный по аналогии с package.json node.js-менеджера npm. В нём указываются зависимости для вашего проекта.

{
    "require": {
            "monolog/monolog": "1.0.*" 
    } 
}

Установка

php composer.phar install

При выполнении этой команды composer смотрит в файл и устанавливает все зависимости в папку vendor

Autoload

composer так же генерирует файлы для автоподключения библиотек:

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

после этого библиотеки доступны для использования в проекте.

Документация

https://getcomposer.org/doc/

Yii

Начнем с установки:

composer global require "fxp/composer-asset-plugin:^1.2.0"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic

Для проверки используем встроенный веб-сервер PHP:

cd basic/web
php yii serve

Или, для Apache используем конфигурацию:

# Set document root to be "basic/web"
DocumentRoot "path/to/basic/web"

<Directory "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...
</Directory>