Composer: какая разница между install и update

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

Для того, чтобы установить зависимости, описанные в файле composer.json, можно воспользоваться двумя командами:

или

Когда выполняется команда composer install, проверяется, существует ли файл composer.lock. Если нет, тогда устанавливаются все зависимости, указанные в файле composer.json . Все пакеты сохраняются в папку vendor. И создается файл composer.lock. В этом файле хранятся имена и номера версий пакетов, которые были установлены.

Если файл composer.lock существует, то зависимости устанавливаются в соответствии с номерами версий, указанных в нем, а содержимое файла composer.json игнорируется.

Я думаю легко догадаться, что такой подход, позволяется не «сломать код», особенное при отсутствии обратной совместимости. Это позволяет иметь единую среду разработки в команде.

А вот composer update, просто устанавливает последние версии пакетов, указанных в composer.json и создает новый composer.lock.

Нюансы: добавьте папку vendor в файл .gitignore, а файл composer.lock наоборот, выгрузите в репозиторий.

Создаем свое приложение с помощью Yii


Тогда я нарисовал удава изнутри, чтобы взрослым было понятнее. Им ведь всегда нужно все объяснять.

«Маленький принц» Антуан де Сент-Экзюпери

Я не зря начал статью цитатой из моей любимой книги детства. Очень часто наблюдаю такую кратину. Начинающие программисты, следуя трендам, переходят на Linux, используют фреймворки, а потом по каждому «чиху» бегут на форумы с криками о помощи, причем большинство ошибок, тривиальны.

Для того, чтобы избежать подобного, я предлагаю пойти другим путем. А именно немного повзрослеть, и изучить удава Yii изнутри. Не смотря на свою любовь к Linux, я поставил Windows, а в качестве веб-окружения, использовал OpenServer. За основу взял статью из официальной документации по Yii: Использование Yii в качестве микро-framework’а.

Структура проекта

Создадим вирутальный хост, расположенный в директории app.

В этой дирктории будет происходить вся магия. Создадим в ней файл composer.json.

О моще Composer поговорим отдельно.

Для того, чтобы лишнее не попадало в репозиторий, в корне проекта создадим файл .gitignore

В корне проекта, также создадим файл .htaccess

Задача которого, настроить mod_rewrite веб-сервера Apache и исключить показ директории web в адресной строке, если вы корень виртуального хоста сделали корнем приложения. Это крайне не рекомендуется в целях безопасности. О настройках виртуальных хостов мы поговорим отдельно, в рамках операционной системы Linux.

И еще один файл config.php

В следующих уроках, мы подробно разберем его более подробно и переместим в другое место. А также сделаем ряд дополнительных настроек, а пока он пусть здесь полежит.

В корне проекта создадим директорию web и в нее поместим index.php

Этот файл, единственная точка входа в наше приложение.

И второй файл .htaccess, который также отвечает за корректную работу модуля mod_rewrite:

Еще нам понадобится контроллер. Для этого создадим в корне проекта директорию controllers, а в нее поместим наш первый контроллер SiteController.php

Установка и запуск приложения

Осталось самое главное. В консоли, перейдем в корень нашего проекта и выполним следующую команду:

После окончания установки ядра Yii, в корне проекта будет создан файл composer.lock и папка vendor, в которой и размещено ядро фреймворка.

Запускаем браузер и открываем в нем свой проект. Наслаждаемся результатом работы.

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

На следующих уроках, мы более подробно изучим материал сегодняшнего урока, а потом создадим полноценное приложение, нечто среднее между шаблонами basic и advanced, но вы будете знать как он устроен и работает. И вместо того, чтобы бежать на форумы с криками о помощи, вы уверенно откроете документацию, еще раз пробежитесь по коду или логам и исправите ошибку.

Исходники: https://github.com/nvrsk-yii2/app

PS. Все исходники я буду сопровождать комментариями и ссылками на документацию.