Composer Flashcards

1
Q
  1. Что такое composer? Зачем он нужен?
A

Composer - это инструмент управления зависимостями в PHP. Он позволяет вам декларировать библиотеки, от которых зависит ваш проект, и он будет управлять (устанавливать / обновлять) их для вас.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q
  1. Каким образом можно скачать или обновить используемые пакеты?
A

update
install
require

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

composer update

A

Задача команды composer update — обновить зависимости проекта до актуальных версий в соответствии с правилами, записанными в composer.json.
Для каждого заявленного в проекте пакета менеджер находит его источник, считывает информацию о версиях и зависимостях, а затем рекурсивно повторяет то же самое для зависимостей пакета, чтобы получить полное дерево. После этого Composer разрешает зависимости с учетом версионных правил, объявленных во всех собранных composer.json файлах.
Плоский массив таких объектов будет записан в формате JSON в файл composer.lock по завершении команды. Это и есть фиксация зависимостей в Composer.
После всех этих операций менеджер сопоставляет разрешенные зависимости с уже имеющимися пакетами в папке vendor/ и устраняет несоответствия: удаляет устаревшие и ненужные пакеты, скачивает (или подтягивает из кэша) новые и добавленные.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

composer install

A

Задача команды composer install — установить зафиксированные зависимости проекта.
При запуске команды Composer первым делом ищет файл composer.lock. В случае успеха, минуя вышеописанные сложные процедуры, менеджер мгновенно получает массив разрешенных зависимостей из lock-файла и сразу приступает к обновлению папки vendor/.
Если composer.lock отсутствует, команда выполняет те же действия, что и composer update (включая создание lock-файла).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

composer require

A

Добавляет требуемый пакет в файл composer.json и устанавливает его в ваш проект.

Команда require изменяет composer.json, находящийся в текущей папке. Если пакету требуются зависимости, то они будут установлены или обновлены. А также будет обновлён composer.lock.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  1. Зачем нужны composer.json и composer.lock?
A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q
  1. Чем команда “composer global” отличается от просто “composer”?
A

Команда global позволяет другие команды такие, как install, require или update запускать так, как если бы вы запускали их из каталога COMPOSER_HOME.

Это может использоваться для того, чтобы установить командные утилиты глобально.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q
  1. Каким образом composer подключает файлы?
A

При установке пакетов composer проходится по их правилам в composer.json и генерирует файл autoload.php в vendor.
Когда зависимость указывается в composer.json, то composer берет имя пакета и ищет его во всех репозиториях, которые указаны в repositories. Если дополнительные репозитории не указаны или пакет в них найти не удается, тогда поиск идет по packagist. Когда пакет найден, тригаются функции управления версиями, чтобы найти лучшую для указанного пакета.
Если обратное не указано, то при поиске учитываются только стабильные версии.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
6.	Структура composer.json, что это за ключи и как используются (в т.ч. в Drupal 8)?
○	require
○	require-dev
○	type
○	minimum-stability
○	extra
○	repositories
A

○ require - список зависимостей для работы проекта
○ require-dev - список зависимостей для разработки проекта
○ type - тип репозитория, указывающийся как параметр репозитория в соответствующем разделе
○ minimum-stability - определяет минимальную стабильность пакета
○ extra - дополнительные параметры, например, патчи
○ repositories - список репозиториев, по которым будут искаться пакеты и их зависимости

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q
  1. Каким образом можно указать версию пакета?
    ○ Что означает версия “1.2.3”?
    ○ Что означает запись “1.2.*|1.2.3”?
    ○ В чём отличие между записями “1.2.3”, “~1.2.3” и “^1.2.3”?
A

1.2.3 - точная версия
1.2.*|1.2.3 - версия 1.2.х, но не больше 1.2.3
~1.2.3 - от 1.2.3 до 1.3
^1.2.3 - от 1.2.3 до 2.0

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q
  1. Что такое semver?
A
Семантическое версионирование.
MAJOR.MINOR.PATCH
MAJOR - несовместимые изменения
MINOR - добавление функциональности с обратной совместимостью
PATCH - обратно совместимые багфиксы
How well did you know this?
1
Not at all
2
3
4
5
Perfectly