Composer — это инструмент управления зависимостями для php, очень полезный и необходимый навык для phper. Но может из-за того, что он появился относительно поздно, его еще слишком мало кто использует.Нет приличной вводной статьи в интернете.Либо копируйте и вставляйте,либо перечисляйте кучу команд напрямую.Официальный документ более подробный,но страница и организация контента - все это более общее, поэтому я напишу один.
1. Введение
что такое композитор?
В нашем проекте могут использоваться чужие пакеты.В прошлом мы возвращались и скачивали их и ставили в свой проект, а потом требовали в коде.На самом деле это относительно низко и хлопотно. Composer — это инструмент, который автоматически управляет зависимостями. Вам нужно только объявить, от каких пакетов вы зависите в своем проекте, и композитор автоматически их загрузит. Кроме того, в composer есть удобная функция для автоматического создания файлов автозагрузки.
Установить
Для win загрузите установочный файл, установите его и используйте в командной строке глобально. Смотрите официальные документы на других платформах, в конце статьи есть ссылка на официальный сайт.
Я столкнулся с ошибкой во время установки Не удалось декодировать поток zlib Решение состоит в том, чтобы добавить в файл конфигурации php.ini Измените zlib.output_compression=Выкл. на Вкл.
Есть три основных момента, которым нужно научиться пользоваться композитором:
- 1. Три концепции, что такое пакет? Что такое композитор? что такое пакгист?
- 2. Для двух файлов должен быть файл для записи информации о зависимости, а затем всем нужно унифицировать формат Давайте посмотрим, что представляет каждое поле.
- 3. Несколько операций, то есть команды, добавления и удаления зависимостей и т.д. Просмотрев эти моменты, я думаю, что композитор освоил это, и это совсем не сложно.
Заказ | Примечание |
---|---|
composer init | Инициализируйте проект, чтобы управлять созданием composer.json. |
composer search | пакет поиска |
composer require | Установить новые зависимости |
composer update [package name] | обновить зависимости |
2. Как использовать управление зависимостями
2.1 Три концепции
Сумка Пакет — это папка, а смысл проекта — это компонент, на который можно сослаться, например, monolog.
композитор Composer на самом деле представляет собой файл phar. Он используется как инструмент. Если он установлен глобально, он используется как установка композитора. Если он не установлен глобально, он используется как установка php /path/to/composer.phar.
упаковщик Нам нужен центральный репозиторий для хранения пакетов, поэтому, пока вы сообщаете composer имя пакета, composer загружает код из этого центрального репозитория https://packagist.org — это основной официальный репозиторий Composer. Вы можете просматривать и искать пакеты ресурсов на веб-сайте упаковщиков (https://packagist.org/) (packagist.org).
2.2 Два файла
Если вы используете композитор в своем проекте, будут добавлены два файла
- composer.json
- композитор.lock Самая важная информация, записанная .json, — это пакеты, от которых зависит проект. Однако предположим, что одна из фактически установленных зависимостей изменилась, например, в результате обновления, из-за чего файл json не соответствует фактическому файлу. .lock записывает информацию о фактически установленных зависимостях, в основном версию. Каждый раз при обновлении зависимостей проекта файл блокировки будет обновляться синхронно.
Поэтому при подаче проекта необходимо предоставить эти два документа.
Когда кто-то загружает ваш проект, composer сначала проверит, есть ли файл блокировки, и если есть, загрузите указанные зависимости в соответствии с файлом блокировки, чтобы все версии зависимостей вашего проекта были согласованы с другими.
2.3 Несколько операций
Вокруг управления зависимостями, естественно, будет несколько операций
- Создайте файл записи зависимостей, который является composer.json
- Установите новые зависимости и обновите файлы журнала
- Удалить зависимости или обновить зависимости, обновить файлы зависимостей
- Опубликуйте свой пакет (зависимости игнорируются)
- Загрузите пакет и установите зависимости (установите зависимости в соответствии с записью о зависимостях) Скажем, один за другим
Создайте файл composer.json
Мы можем создавать json-файлы вручную или автоматически, есть автоматический, конечно, автоматический предпочтительнее
Запустите командную строку в корневом каталоге нашего проекта.composer init
автоматически создан
PS D:\code\test3> composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [kelle/test3]: my/ctest
Description []:
Author [, n to skip]: dragonfly429 <dragonfly429@foxmail.com>
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []:
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]?
Search for a package:
{
"name": "my/ctest",
"authors": [
{
"name": "dragonfly429",
"email": "dragonfly429@foxmail.com"
}
],
"require": {}
}
Do you confirm generation [yes]?
Необходимо понимать поля и форматы этого json-файла.
--name: 包的名称。
--description: 包的描述。
--author: 包的作者。
--homepage: 包的主页。
--require: 需要依赖的其它包,必须要有一个版本约束。并且应该遵循 foo/bar:1.0.0 这样的格式。
--require-dev: 开发版的依赖包,内容格式与 --require 相同。
--stability (-s): minimum-stability 字段的值。
требуется имя автора требуется -dev означает, что он используется только во время разработки.Это то же самое, что и синтаксис npm (сохранение не нужно записывать)
Установить новые зависимости
Вставьте команду поискаcomposer search
PS D:\code\test3> composer search monolog
monolog/monolog Sends your logs to files, sockets, inboxes, databases and various web services
symfony/monolog-bundle Symfony MonologBundle
symfony/monolog-bridge Symfony Monolog Bridge
easycorp/easy-log-handler A handler for Monolog that optimizes log messages to be processed by humans instead of software. Improve your productivity with logs that are easy to understand.
wazaari/monolog-mysql A handler for Monolog that sends messages to MySQL
theorchard/monolog-cascade Monolog extension to configure multiple loggers in the blink of an eye and access them from anywhere
logentries/logentries-monolog-handler A handler for Monolog that sends messages to Logentries.com.
flynsarmy/slim-monolog Monolog logging support Slim Framework
bramus/monolog-colored-line-formatter Colored Line Formatter for Monolog
tylercd100/lern LERN (Laravel Exception Recorder and Notifier) is a Laravel 5 package that will record exceptions into a database and will notify you via Email, Pushover or Slack.
maxbanton/cwh AWS CloudWatch Handler for Monolog library
rahimi/monolog-telegram A handler for Monolog that sends messages to Telegram Channels
markhilton/monolog-mysql Laravel 5 MySQL driver for Monolog
lexik/monolog-browser-bundle This Symfony2 bundle provides a Doctrine DBAL handler for Monolog and a web UI to display log entries
kdyby/monolog Integration of Monolog into Nette Framework
Заказcomposer require
PS D:\code\test3> composer require monolog/monolog
Using version ^1.23 for monolog/monolog
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
- Installing psr/log (1.0.2): Downloading (100%)
- Installing monolog/monolog (1.23.0): Downloading (100%)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)
monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing sentry/sentry (Allow sending log messages to a Sentry server)
Writing lock file
Generating autoload files
После завершения появится дополнительная папка vendor, содержащая монолог и автозагрузку
Что ж, загрузка, которую я люблю слышать, очень медленная, добавление домашнего зеркала — базовая операция.
引用知乎回答
Composer 下载扩展包时候需要跟这两个网站通信:Packagist 官网 —— 获取扩展包信息,下载代码包;GitHub ——
下载代码包。下载慢的原因是这两个网站都为国外的,一般情况下访问速度很慢,有时候甚至无法访问。解决方案是将构建一台能高速访问的服务器,并将所有的扩展包使用国内的 CDN 进行加速。我们社区维护了一个加速镜像,请见:Laravel China 社区维护的国内全量镜像 ——
https://laravel-china.org/composer使用方法:
选项一、全局配置(推荐)
`$ composer config -g repo.packagist composer https://packagist.laravel-china.org`
选项二、单独使用如果仅限当前工程使用镜像,去掉 -g 即可,如下:
`$ composer config repo.packagist composer https://packagist.laravel-china.org`
取消镜像
`composer config -g --unset repos.packagist`
作者:Summer
链接:https://www.zhihu.com/question/24997679/answer/30703365
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
обновить зависимости
remove和 update
немного
выпуск пакета
немного
Загрузите пакет и установите зависимости
·install
При загрузке пакета эта команда позволяет композитору прочитать composer.json и установить перечисленные в нем зависимости.
3. Как использовать автозагрузку
Просто добавьте следующую строку кода в загрузочный файл вашего проекта:
require 'vendor/autoload.php';
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('./test.log', Logger::WARNING));
// add records to the log
$log->addWarning('Foo');
$log->addError('Bar');
Успешно запустить еще один файл
4. Другие полезные команды
5. Ссылка
Общие операции и команды Composer
Общие команды и ограничения версии для расширенного использования Composer
Используйте GitHub, Composer, Packagist для управления общедоступными пакетами PHP (шаг за шагом)