Версии в Composer

Рассмотрим какие существуют варианты указания версии пакета в Composer.

{
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.3.*",
        "twig/extensions": "1.0.0",
        "symfony/monolog-bundle": "dev-master",
        "doctrine/orm": ">=2.2.3,<2.4-dev",
        "sensio/generator-bundle": "~2.3.0",
        "incenteev/composer-parameter-handler": "~2.0",
        "monolog/monolog": "dev-master#2eb0c0978d290a1c45346a1955188929cb4e5db7"
    }
    "extra": {
        "branch-alias": {
            "dev-master": "2.3-dev"
        }
    }
}
  • Точное указание версии, например строка пять, "twig/extensions": "1.0.0". Если даже будут выходить фиксы к версии то пакет обновляться не будет. На строке 9 "monolog/monolog": "dev-master#2eb0c0978d290a1c45346a1955188929cb4e5db7" указана ветка и точная ссылка на commit. Это полезно на стадии разработки когда пакет от которого вы зависите ветке dev-master не стабилен.
  • Указание диапазона, например третья строка "php": ">=5.3.3" указывает что версия php должна быть более 5.3.3, а строка 7 "doctrine/orm": ">=2.2.3,<2.4-dev", указывает на версию doctrine больше либо равной 2.2.3 но меньше 2.4-dev. Возможно использовать операторы >, >=, <, <=, !=.
  • Wildcard, например строка 4 "symfony/symfony": "2.3.*", указывает что может быть установлен пакет от версии 2.3.0 до 2.3.999999, то есть будут устанавливаться все баг фиксы данной версии.
  • Следующая значительная версия (тильда оператор) например строка восемь "sensio/generator-bundle": "~2.3.0", указывает что может обновится до версии меньшей 2.4 но больше чем указана, а строка девять "incenteev/composer-parameter-handler": "~2.0", указывает что может обновлена до версии меньше 3.0

Указание версии dev-master указывает на последний релиз ветки master например "symfony/monolog-bundle": "dev-master",, он не всегда рабочий. В extra можно указать branch-alias, то есть версия указанная на пакете будет ссылаться на алиас, к примеру в данной конфигурации пакет "symfony/monolog-bundle": "dev-master", будет установлен версией 2.3-dev.

Если вы выпускаете пакет, версия пакета у него должна быть указана не require :"dev-master", всегда можно найти другой вариант.

Узнать доступные версии пакетов можно на Packagist

В данном случае указано как добавить пакет в composer.json единственное можно изменить последний ноль на * для обновления исправлений.

Источники вдохновения:

Читайте также:

Docker установка и настройка

При разработке используется множество технологий. К примеру данный блог использует php(Symfony 2), mongodb, elastic, nginx это основные но также используется nodejs к примеру для минификации css, js. При разработке приходится настраивать все технологии как показано в статье. Но что делать если проектов несколько или они используют разные технологии, например другой проект использует MySQL, или еще могут использовать разные версии php или других библиотек. Для разработки и поддержки проектов на разных технологиях можно использовать Виртуальную машину и поставить на нее к примеру centos, но это не совсем удобно, надо все равно настраивать подобное окружение как на сервере и на других машинах разработчиков. Мы будет использовать контейнеры, такие как Docker. Настроем блог разработчиков чтобы использовать Docker для разработки.

Как использовать произвольное хранилище пользователей в FOSUserBundle

Практически все используют FOSUserBundle в своих Symfony проектах т.к. он ускоряет разработку и обладает хорошим набором функциональности для управления пользователями. Бандл предоставляет несколько готовых реализаций хранилищ данных: Propel и несколько для Doctrine (ORM и ODM). Это здорово, но иногда возникает необходимость работы с другими хранилищами данных. FOSUserBundle достаточно гибок и позволяет реализовать, и использовать произвольное хранилище. Для того, чтобы использовать все возможности FOSUserBundle Вам достаточно будет написать свой менеджер пользователей под конкретного провайдера.

Интеграция Paysera в Symfony

Сегодня сложно представить себе серьезный проект, где не понадобилась бы интеграция с платежными системами. Не смотря на то что существует множество популярных систем и аггрегаторов, таких как PayPal, RBKMoney, Paymentwall, Robokassa и т.д., я хочу рассказать о Paysera. Это еще одна, довольно новая платежная система. Они позиционируют себя как выгодных с точки зрения комиссий за их услуги. Paysera позволяет вашим пользователям расплачиваться карточками, SMS и т.д. Интеграция довольно простая, однако имеет некоторые неочевидные моменты, которые я и хочу осветить.

Создание сайта “Обратный отсчет” на Symfony2

Мы иногда видим сайты с обратным отсчетом, проект стартует через … Его сделать достаточно просто, и не займет много времени. Мы воспользуемся проектом fdevs/coming-soon, который основан на Symfony2. Также будем сохранять введеный пользователями адреса электронной почтой в базу данных MongoDB. У нас есть настроенное рабочее окружение Osx, о настройке можно прочитать в статье Yosemite настройка рабочего окружения. Но главное версия php не меньше 5.4. В проекте можно также использовать реляционную базу данных типа MySQL. По умолчанию в проекте вообще не используется база данных, а введеный email отправляется на почту.

Yosemite настройка рабочего окружения.

После обновления OSx Yosemite, необходимо настроить рабочую систему. Мы установим и настроим пакеты php-fpm, nginx, mongo, nodejs. Для начала установим Xcode из App Store обновим консольные команды $ xcode-select --install и уберем apache из автозагрузки $ sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist . Так как у Apple не появилось своего менеджера пакетов будем использовать проверенный brew.