Что такое композитор?
Композитор не является менеджером пакетов. Да, он включает в себя “пакеты” и “библиотеки”, но он управляется на основе каждого проекта и устанавливается в каталог вашего проекта (например, поставщика). По умолчанию он ничего не устанавливает глобально. Так что это просто управление зависимостями.
Композитор был сильно вдохновлен NPM node и связывателем ruby. В то время не существовало аналогичного инструмента под PHP.
Что может сделать композитор?
Композитор решит эту проблему за вас таким образом:
- У вас есть проект, который зависит от нескольких библиотек.
- Некоторые из этих библиотек зависят от других библиотек.
- Вы заявляете, от чего вы зависите.
- Composer выяснит, какие версии пакетов необходимо установить, и установит их (загрузите их в свой проект).
Использование композитора для системного обучения пожалуйста, переместите композитора для изучения китайского языка
Разработайте свои собственные компоненты композитора
Пункты: Понимание того, как composer реализует автоматическую загрузку сторонних компонентов; Понимание psr-0
и psr-4
Норм; Понимание на основе psr-0
, psr-4
, classmap
Как автоматически загружаются файлы? Понимающий композитор и упаковщик
Об установке и использовании composer Пожалуйста, обратитесь к composer для изучения китайского языка
Создание имен каталогов
mkdir try-make-package cd try-make-package
это попробуйте сделать упаковку
Эта папка является корневым каталогом вашего пакета. Вам просто нужно запомнить, какой составитель каталогов. JSON находится под. Обычно это корневой каталог пакета. Теперь, когда у нас нет композитора. Файл JSON, давайте его инициализируем.
Инициализация пакетов расширений
☁ composer init Welcome to the Composer config generator This command will guide you through creating your composer.json config. Package name (/ ) [lingan/try-make-package]: Description []: try make a package Author [saboran <[email protected]>, n to skip]: Minimum Stability []: dev Package Type (e.g. library, project, metapackage, composer-plugin) []: library License []: MIT Define your dependencies. Would you like to define your dependencies (require) interactively [yes]? n Would you like to define your dev dependencies (require-dev) interactively [yes]? n { "name": "lingan/try-make-package", "description": "try make a package", "type": "library", "license": "MIT", "authors": [ { "name": "saboran", "email": "[email protected]" } ], "minimum-stability": "dev", "require": {} } Do you confirm generation [yes]? yes
После некоторой борьбы создается текущий каталог. composer.json
Файл, давайте внесем некоторые изменения в этот файл.
измените composer.json, добавив спецификации автоматической загрузки (отношения сопоставления пространства имен и каталогов) и требования к окружающей среде
{ "name": "lingan/try-make-package", "description": "try make a package", "type": "library", "license": "MIT", "authors": [ { "name": "saboran", "email": "[email protected]" } ], "minimum-stability": "dev", "require": { "php": ">=7.0" }, "autoload": { "psr-4": { "Flower\Rose\": "src/Flower/Rose", "Flower\Lily\": "src/Flower/Lily" } } }
Создание файлов классов
На основе взаимосвязи сопоставления между пространством имен и каталогом выше создайте соответствующий каталог и файл, как показано ниже
Соответствующее содержимое файла
Испытательная установка
После сортировки приведенного выше кода вам необходимо установить composer
, чтобы проверить, правильно ли работают наши пакеты, это будет vendor/composer/autoload_psr4.php
Создание отношений сопоставления между пространствами имен и каталогами, заключенными в массив:
array($baseDir . '/src/Flower/Rose'), 'Flower\Lily\' => array($baseDir . '/src/Flower/Lily'), );
увеличьте.gitignore, игнорируйте некоторые файлы для GIT и добавьте readme. MD для добавления описаний проектов
.idea vendor/ composer.lock
Отправьте код на GitHub
Теперь создайте новый склад на своей домашней странице Github и отправьте проект на соответствующий склад следующим образом
git init git add -A git commit -am "init && dev package" git remote add origin [email protected]:linganmin/try-make-package.git git push -u origin master
Войдите в свой пакет (зарегистрируйтесь самостоятельно)
Вставьте адрес своего проекта, нажмите “Проверить”, затем нажмите “Отправить”, и ваш пакет composer будет успешно отправлен.
Тестирование с использованием расширений пакетов, разработанных нами самими [Обновление 2017.11.07]
- Создайте каталог тестов
mkdir test-my-package cd test-my-package
- Установите свои собственные расширения
composer require lingan/try-make-package dev-master ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Installing lingan/try-make-package (dev-master d7b9f94): Cloning d7b9f941b0 from cache Writing lock file Generating autoload files
- Установленный каталог показан ниже.
- См.
autoload_psr4.php
array($vendorDir . '/lingan/try-make-package/src/Flower/Rose'), 'Flower\Lily\' => array($vendorDir . '/lingan/try-make-package/src/Flower/Lily'), );
- Новый файл Ввода Домашней Страницы
index.php
Начните тестировать свои пакеты
desc(); echo "\n"; echo $lily->desc();
- осуществлять
php index.php this is rose flower this is lily flower%
* Пока это показывает, что разработанные нами пакеты расширений можно использовать в обычном режиме.
Настройте пакет для автоматического обновления пакета расширения, то есть, когда мы обновим пакет расширения и отправим его на GitHub, пакет автоматически обновится.
Если автоматическое обновление не установлено, на странице сведений о пакете в Packagist появится такое приглашение
Этот пакет не обновляется автоматически. Пожалуйста, настройте сервисный крючок GitHub для Packagist, чтобы он обновлялся при нажатии! (Этот пакет не обновляется автоматически. Настройте сервисный крючок GitHub для обновления Packagist при нажатии! )
Подробная настройка адреса документа пакета автоматического обновления
Упрощенные шаги заключаются в следующем:
- Перейдите на страницу Личного центра и получите свой собственный маркер API
- Для получения текущего адреса пакета на GitHub нажмите
Настроить
НажмитеИнтеграция и службы
НажмитеДобавить упаковщика
Обслуживайте и настраивайте свой маркер API, а также имя пользователя упаковщика и соответствующее доменное имя учетной записи - Выбор
активный
Нажмитедобавить услугу
- Настройте автоматическое обновление на завершение, а затем измените код расширения пакета для отправки на GitHub, и очень небольшая разница во времени будет синхронизирована с Packagist.
Заключительные замечания
Как правило, находите свои собственные недостатки и старайтесь обращаться к более новым технологиям и инструментам. Если в приведенном выше тексте есть какие-либо ошибки, пожалуйста, исправьте их.
Счастливое Кодирование