Композитор не является менеджером пакетов. Да, он включает в себя “пакеты” и “библиотеки”, но он управляется на основе каждого проекта и устанавливается в каталог вашего проекта (например, поставщика). По умолчанию он ничего не устанавливает глобально. Так что это просто управление зависимостями.
Эта идея не нова. Композитор был сильно вдохновлен 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
Ссылка:
Ссылка:
Ссылка: