Рубрики
Uncategorized

Некоторые знания и понимание о композиторе _v1.0_byKL

Автор оригинала: David Wong.

Композитор не является менеджером пакетов. Да, он включает в себя “пакеты” и “библиотеки”, но он управляется на основе каждого проекта и устанавливается в каталог вашего проекта (например, поставщика). По умолчанию он ничего не устанавливает глобально. Так что это просто управление зависимостями.

Эта идея не нова. Композитор был сильно вдохновлен NPM node и сборщиком ruby. В то время не существовало аналогичного инструмента под PHP.

Композитор решит эту проблему за вас таким образом:

  • У вас есть проект, который зависит от нескольких библиотек.

  • Некоторые из этих библиотек зависят от других библиотек.

  • Вы заявляете, от чего вы зависите.

  • Composer выяснит, какие версии пакетов необходимо установить, и установит их (загрузите их в свой проект).

Поскольку laravel управляется с помощью composer , все основано на laravel.

Скачайте и установите composer

Здесь мы добавим, что:

  1. По некоторым причинам доступ к сайтам ресурсов 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 и создайте файл блокировки.

Общее использование-это:

  1. Установка композитора (Команда установки считывает композитора. Файл JSON из текущего каталога обрабатывает зависимости и устанавливает его в каталог поставщика. )

  2. Composer установить XXXX (это используется при установке некоторых пакетов отдельно)

  3. Обновление композитора (для получения последней версии зависимостей и обновления композитора. файл блокировки,)

  4. Обновление композитора XXX (аналогично)

  5. Composer require (команда require добавляет в composer новые пакеты зависимостей. Файл JSON текущего каталога. Но его нельзя обновить)

  6. 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

Ссылка:

  1. Ссылка:

  2. Ссылка: