Композитор не является менеджером пакетов. Да, он включает в себя “пакеты” и “библиотеки”, но он управляется на основе каждого проекта и устанавливается в каталог вашего проекта (например, поставщика). По умолчанию он ничего не устанавливает глобально. Так что это просто управление зависимостями.
Эта идея не нова. Композитор был сильно вдохновлен NPM node и сборщиком ruby. В то время не существовало аналогичного инструмента под PHP.
Композитор решит эту проблему за вас таким образом:
У вас есть проект, который зависит от нескольких библиотек.
Некоторые из этих библиотек зависят от других библиотек.
Вы заявляете, от чего вы зависите.
Composer выяснит, какие версии пакетов необходимо установить, и установит их (загрузите их в свой проект).
Поскольку laravel управляется с помощью composer , все основано на laravel.
Скачайте и установите composer
Здесь мы добавим, что:
По некоторым причинам доступ к сайтам ресурсов composer за рубежом осуществляется медленно, в результате чего
установка composerвозможнообновлениеЧасто время ожидания подключения истекает и возникают ошибки, поэтому перейдите на китайское зеркало
Overall situation:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
Partial projects (which need to be executed in the current directory of the project):
composer config repo.packagist composer https://packagist.phpcomposer.comКоманда будет выполнена после ее выполнения. composer.json Добавьте этот абзац в документ, что означает, что добавление китайских зеркал прошло успешно и будет продолжаться в будущем. Установка линейного композитора возможно обновление Это изображение предпочтительнее для таких команд, как эта
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}используйте самообновление композитора Для обновления версии инструмента composer
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"Require": {// Here is the project that tells composer to install, which is equivalent to the production environment
"php": ">=5.5.9",
"Laravel/framework": "5.2. *", //require needs a package name, which is the package name.
"laravelcollective/html": "5.2.*",
"yuanchao/laravel-5-markdown-editor": "dev-master"
},
"Require-dev": {// This is a development project that needs to be installed, which is equivalent to the development environment. You can cancel the installation of packages in this project by-no-dev.
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"symfony/css-selector": "2.8.*|3.0.*",
"symfony/dom-crawler": "2.8.*|3.0.*"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
},
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\Foundation\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\Foundation\ComposerScripts::postUpdate",
"php artisan optimize"
]
},
"config": {
"preferred-install": "dist"
}
}Версия имени пакета
The exact version number - - - 1.0.2 - - - you can specify the exact version of the package. Scope - ---->= 1.0 >= 1.0, <2.0 >= 1.0, <1.1 |>= 1.2 - - - Valid version ranges can be specified by using comparison operators. Valid operators: >,>=,<,<=,!=. You can define multiple scopes separated by commas, which will be treated as a logical AND process. A pipe symbol | will be processed as a logical OR. The priority of AND is higher than OR. The wildcard character - - - - - - 1.0. * - - - you can use the wildcard character * to specify a pattern. 1.0. * and >= 1.0, < 1.1 are equivalent. The assignment operator - ----- 1.2 - --- is very useful for projects that follow the semantically versioned number. ~ 1.2 is equivalent to >= 1.2, < 2.0.
Нам нужно сосредоточиться на подстановочных знаках и волнистых символах, которые хорошо понятны и несколько неудобны. ~ Лучше всего объяснить примерами: ~1.2 равно.2, < 2.0 (отмечая самую низкую версию, от которой вы зависите) и ~1.2.3 равно.2.3, < 1.3. (Укажите самую низкую версию, но разрешите увеличить последнюю цифру номера версии.) Семантизацию трудно понять, но прямой просмотр примеров показывает, как ее использовать.
Основное Использование
Composer устанавливает пакеты, читая composer. JSON и композитор. блокировка файлов
После установки зависимостей Composer записывает композитору список точных номеров версий на момент установки. файл блокировки. Это приведет к блокировке конкретной версии проекта модификации. Поскольку команда установки проверяет, существует ли файл блокировки, если он существует, она загружает указанную версию (игнорируя определение в composer. Файл JSON). Если нет композитора. заблокируйте файл, Composer прочитает composer. JSON и создайте файл блокировки.
Общее использование-это:
Установка композитора (Команда установки считывает композитора. Файл JSON из текущего каталога обрабатывает зависимости и устанавливает его в каталог поставщика. )
Composer установить XXXX (это используется при установке некоторых пакетов отдельно)
Обновление композитора (для получения последней версии зависимостей и обновления композитора. файл блокировки,)
Обновление композитора XXX (аналогично)
Composer require (команда require добавляет в composer новые пакеты зависимостей. Файл JSON текущего каталога. Но его нельзя обновить)
Composer dump-автозапуск (в некоторых случаях вам необходимо обновить автозагрузчик, например, добавив новый класс в свой пакет).
Автоматическая загрузка composer создает этот файл vendor/autoload.php Затем вызовите этот файл, чтобы получить автоматическую загрузку классов в файле
Автоматическая загрузка поддерживает только имена PSR-4 и PSR-0
Under the psr-4 key you define a mapping from namespaces to paths, relative to the package root.
{
"autoload": {
"psr-4": {
"Monolog": "src/", // here is almost the same, but the meaning is not the same. psr4 will set a namespace as the root directory of the package. For example, this line means that Src / directory maps to the root directory of the package. When calling this package, write Monolog\ Bar Baz. Actually, automatic loading will go to Src / Bar / Baz. PHP to find the class file, and then load it.
"Vendor\Namespace\": ""
}
}
}
Under psr-0 key, you define a namespace mapping to the actual path (relative to the root directory of the package)
{
"autoload": {
"psr-0": {
"Monolog": "src/", // here means that src/directory maps to Monolog\ if Monolog Bar Baz is called, the auto-loading will go to src/Monolog/Bar/Baz.php, and then load it.
"Vendor\Namespace\": "src/",
"Vendor_Namespace_": "src/"
}
}
}Автоматическая загрузка Laravel кое-что добавит
vendor/autoload.php
Ссылка:
Ссылка:
Ссылка: