<rmcreative>

RSS

С Yii 1.1 на Yii 2.0, часть 2: Composer

20 августа 2014

Для установки Yii 1.1 и начала работы необходимо было скачать архив с сайта, распаковать его и выполнить в командной строкеyiic webapp. В последних версиях появилась возможность работы через Composer, но установка из архива так и осталась основным способом. Архивы используются и для большинства расширений. К каждому прилагается свой readme, который объясняет как поставить и настроить каждое расширение.

Трудоёмкость процесса установки и обновления фреймворка и, в ещё большей степени, расширений навела на мысли, что в 2.0 небходимо всё это упорядочить и автоматизировать. Основным способом получения фреймворка и расширений стал Composer. Поставить его легко. Либо выполняем в командной строке:

curl -s http://getcomposer.org/installer | php

либо руками скачиваем с http://getcomposer.org/.

Больше вручную вам ничего качать не придётся. Совсем. Один подготовительный шаг следует выполнить один раз перед первой установкой Yii:

composer global require "fxp/composer-asset-plugin:1.0.0-beta4"

После этого первое приложение можно создать прямо из консоли:

php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic /path/to/yii-application

Composer самостоятельно скачает всё необходимое и выставит права на директории и файлы.

Если с консолью у вас проблемы, с сайта всё ещё можно скачать фреймворк и базовые зависимости в виде архива и сделать всё как ранее (только yiic webapp делать не придётся). Однако, с консолью и Composer всё-таки лучше подружиться. Ручная установка расширений — дело очень трудоёмкое.

Полная документация Composer, которую очень полезно изучить, находится по адресу https://getcomposer.org/doc/. Здесь же приведу главные факты.

  • Все пакеты (фреймворк — тоже пакет) устанавливаются в директорию vendor приложения. Руками туда лезть не стоит (если, конечно, не работаете над кодом одного из пакетов). Добавлять в репозиторий также незачем.
  • Ваше приложение — тоже пакет. Просто вы его не публикуете (скорее всего).
  • Настройки главного пакета хранятся в composer.json.
  • Самая интересная секция в composer.jsonrequire. Это список пакетов, от которых зависит ваш, и их версий. При выполнении composer install и composer update перечислененые пакеты устанавливаются или обновляются автоматически.

← С Yii 1.1 на Yii 2.0, часть 1: PHP

С Yii 1.1 на Yii 2.0, часть 3: приложения →

Комментарии RSS

  1. №9133
    Максим
    Максим 20.08.2014, 19:45:45

    Спасибо, полезно. Как раз сейчас буду yii2 пробовать в проекте.

  2. №9134
    XAKEPEHOK
    XAKEPEHOK 20.08.2014, 20:36:52

    Я хоть и пользуюсь composer'ом, но не понимаю одну вещь. Подскажите пожалуйста: почему не стоит держать пакеты в репозитории? Я читал, что не рекомендуется, но есть 3 "но" которые меня смущают:

    1. Что произойдет, если репозиторий какого-либо пакета будет удалён с гитхаба? Понятно что если пакет уже скачан, то он просто обновляться не будет. А если еще не скачан?
    2. Что если каким-то образом в код одного из пакетов будет внедрён вредоносный код? Я имею в виду в продакшене в результате какой-нибудь уязвимости злоумышленник внедрит вредоносный код в те скрипты, которые не находятся под git? Как в таком случае увидеть проблему?
    3. Что делать, если обновленный пакет не совместим с приложением? Как откатываться?
  3. №9135
    alexey
    alexey 21.08.2014, 5:33:58

    2XAKEPEHOK:

    1. Если репозиторий удалили, значит вам нужно будет искать ему замену, и удалить его из composer.json
    2. Можно настроить хуки на изменения файлов и отслеживать. Если злоумышленник зашел к вам в вендоры, и он во всем там разобрался и смог исправить код так, что вы не заметили -- он опытен :)
    3. Вы же на продакшене используете только composer install? Он берет тот пакет который прописан в composer.lock и скачивает именно ту версию (комит, тэг, что-то еще)

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

    По поводу хранить\не хранить: каждый для себя выбирает сам, я использую composer уже 2 года (начинал еще с symfony 2.0) описанный мной случай единственный за все это время.

  4. №9184
    Alex
    Alex 23.09.2014, 15:40:45

    Композер - правильное решение. Впрочем, как и возможность вынести файлы фреймворка выше document root, phalcon-like работа с моделями и многое другое. Радует, что фреймворк развивается в правильном направлении.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.