Статьи

Композитор Cheatsheet

Эта статья была спонсирована AppDynamics . Спасибо за поддержку спонсоров, которые делают возможным SitePoint!

Если вы не жили под камнем, сегодняшний PHP не PHP вашей бабушки; это совершенно другой, гораздо более элегантный и зрелый язык с бесчисленными улучшениями и дополнениями.

Одним из ключевых дополнений является Composer , де-факто стандарт для управления зависимостями проекта PHP, который по умолчанию предоставляет доступ к сотням готовых библиотек через Packagist.org .

Я не собираюсь рассказывать о том, как использовать Composer, так как он уже хорошо описан здесь, на SitePoint; особенно этой статьей Александра Коньо.

Вместо этого я подхожу к этому с другой стороны, проводя вас через превосходную шпаргалку Composer , с которой я недавно столкнулся.

Если вы хотите посмотреть краткий видеообзор, воспользуйтесь встроенным ниже. В противном случае продолжайте чтение. Я призываю вас сделать оба.

Как и любой сложный, многофункциональный инструмент, с Composer вы можете сделать так много всего. Например, вы можете использовать файл composer.phar для:

  • Добавить поддержку композитора в существующий проект
  • Запускать сценарии в ответ на различные события , такие как до и после установки , до и после обновления пакета
  • Укажите пользовательские автозагрузчики
  • Различать зависимости в зависимости от того, находится ли проект в разработке , тестировании , в реальном времени или в другой конкретной среде
  • Используйте сотни доступных пакетов через Packagist.org

Только с помощью этих примеров вы можете увидеть, что есть много функциональных возможностей, а также много, что нужно запомнить .

Итак, пока вы используете его в каждом проекте, знаете ли вы все, что он может предложить? Или вы снова и снова используете один и тот же набор параметров командной строки и параметров конфигурации, не задумываясь о том, что еще доступно?

Я бы посоветовал, если вы похожи на меня, вы в последнем лагере. Сегодня я хочу помочь вам исправить это и действительно получить максимальную отдачу от Composer, пройдя через шпаргалку.

Я уверен, вы поймете, почему это так хорошо заслуживает название; и вскоре вы начнете иметь его на закрепленной вкладке, очень похоже на руководство по PHP. Это так хорошо!

2 ключевые части

По сути, он состоит из двух ключевых частей:

  1. Переключатели командной строки composer.phar
  2. Файл composer.json

Ключи командной строки composer.phar

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

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

  • install — который устанавливает зависимости в каталоге vendor
  • самообновление — обновляет файл composer.phar до последней версии
  • init — устанавливает поддержку композитора в существующем или новом проекте
  • validate — который проверяет существующий файл composer.json
  • диагностировать — для выполнения автоматических проверок
  • архив — который создает архив пакета композитора.

Используя шпаргалку, я узнал, что, передав ключ --optimize в dump-autoload , вы можете получить что-нибудь до 20% повышения производительности в своих проектах.

Не слишком потертый, не правда ли? Хорошо, я мог бы выяснить это в ходе тестирования или покопаться в документации, но шпаргалка позволила быстро и легко найти ее.

Конфигурация файла composer.json

Я бы предложил этот раздел, где вы будете проводить большую часть своего времени с шпаргалкой. В то время как вызов composer.phar может быть в значительной степени записан в сценарии, необходимые для каждого проекта конфигурации могут отличаться достаточно регулярно, чтобы каждый раз требовалось множество различных опций.

Так что раздел composer.json определенно ваш друг в этом отношении. Как и в случае с composer.phar, он отображает пример с использованием каждого параметра. В нем перечислены все параметры прямо из самых распространенных, таких как имя , описание , авторы , и их требования, которые предоставляют ключевую информацию о пакете вместе с его зависимостями.

Авторы — хороший пример, показывающий имя , адрес электронной почты , домашнюю страницу и роль двух примеров авторов, которые вы можете увидеть ниже:

 "authors": [ { "name": "Xavier Lacot", "email": "xlacot@jolicode.com", "homepage": "http://www.lacot.org", "role": "Developer" }, { "name": "Benjamin Clay", "email": "bclay@jolicode.com", "homepage": "http://ternel.net", "role": "Developer" } ], 

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

  • поддержка — где вы найдете список вариантов поддержки, когда пользователям нужна помощь
  • автозагрузка — где вы можете установить конкретные параметры отображения автозагрузки для автозагрузчика PHP
  • репозитории — позволяющие вам выйти за рамки стандартного бэкэнда Packagist, добавить PEAR, использовать инструменты управления версиями, такие как GitHub, Bitbucket или собственные, частные пакеты, использующие Satis .

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

 "scripts": { "post-update-cmd": MyVendor\\MyClass::postUpdate", "post-package-install": [ "MyVendor\\MyClass::postPackageInstall" ], "post-install-cmd": [ "MyVendor\\MyClass::warmCache", "phpunit -c app/" ] }, 

Как и в случае с разделом composer.phar, наведя на них курсор мыши, вы увидите специфику раздела в правой части, а также примеры использования.

Вывод

Я считаю, что это отличный инструмент для получения максимальной отдачи от Composer. Некоторые могут сказать, что на одной странице это недостаточно подробно; Я не согласен

Способ составления шпаргалки, показывающий примеры использования каждой опции командной строки и перечисление полного примера файла composer.json в сочетании с подробным описанием и дополнительными примерами использования каждого аспекта, является элегантным подходом.

Вы можете получить столько информации, сколько вам нужно, без перегрузки. Как вы думаете? Как вы думаете, это может пойти дальше и предоставить больше информации? Или это просто правильная длина? Поделитесь своими мыслями в комментариях.

Так как это Open Source, если вы видите что-то, что нуждается в улучшении, опечатку или вообще хотите добавить больше информации, зайдите туда, раскошелитесь и отправьте запрос на извлечение .

В противном случае наслаждайтесь.