Автор оригинала: David Wong.
Теперь мы часто используем Composer для управления зависимостями. Как и инструменты управления пакетами на других языках, Composer использует управляемый код GitHub для управления зависимостями на основе файлов конфигурации и для создания сценариев для выполнения определенных задач. В целом, есть много преимуществ.
На практике мы можем извлечь общую логику из нескольких проектов в виде зависимости и отправить ее в Packagist, на которую можно ссылаться в других проектах. Однако, в отличие от NPM, PHP-программы в основном развертываются на серверах и получают внешний доступ через интерфейсы, что требует гораздо более высокой безопасности. Интерфейс может быть открыт для всех, чтобы смотреть, серверную часть лучше всего размещать в месте, которое другие не могут легко увидеть, в случае, если какой-либо коллега напишет пароль, соль, отправленная в код, была найдена, результаты могут быть очень опасными.
На данный момент нам нужен инструмент для создания частных источников, которые все являются частными складами, внутренними и внешними.
Satis Composer является официальным инструментом для создания частных источников. Его документация находится здесь и здесь.
Весь процесс не является сложным. Это есть в документе. Я просто повторю это вкратце. Он содержит только те части, которые я использовал, с акцентом на мой опыт. Я предполагаю, что читатель уже знает основное использование Composer. Если у вас есть какие-либо вопросы, пожалуйста, обратитесь к документу самостоятельно.
1. Создание проектов
Используйте встроенную функциональность проекта Composer, которая эквивалентна git clone + композитор установка + Запустите сценарий после установки.
composer create-project composer/satis my-satis --stability=dev --keep-vcs
2. Создание файлов конфигурации
оставайтесь /путь/к/my-satis Заведение по каталогу satis.json файл
{
"Name": "warehouse name"
"Homepage": "http://satis warehouse address"
"repositories": [
{ "type": "vcs", "url": "https://github.com/mycompany/privaterepo" },
{ "type": "vcs", "url": "http://svn.example.org/private/repo" },
{ "type": "vcs", "url": "https://github.com/mycompany/privaterepo2" }
],
"require-all": true
}Будьте осторожны: Требования к названию склада и Склад Внутри composer.json Из имени Определение непротиворечиво, и оно не имеет ничего общего с путем, иначе оно не будет найдено. Я застрял с этой картой надолго.
Потому что само присоединение к частному хранилищу исходных текстов также может зависеть от этого. требуется-все Мы возьмем информацию, от которой мы зависим. Если нет, вы можете указать склад или даже версию:
{
"Name": "warehouse name"
"Homepage": "http://satis warehouse address/".
"repositories": [
{ "type": "vcs", "url": "https://github.com/mycompany/privaterepo" },
{ "type": "vcs", "url": "http://svn.example.org/private/repo" },
{ "type": "vcs", "url": "https://github.com/mycompany/privaterepo2" }
],
"require": {
"company/package": "*",
"company/package2": "*",
"company/package3": "2.0.0"
}
}3. Создание списков складов
осуществлять
php bin/satis build satis.json ./web
Может быть в пути/к/my-satis/web/ Он генерирует список складов.
4. Используйте частные источники в других проектах
Только в проекте composer.json Добавить в корень файла
{
"repositories": [
{
"type": "composer",
"Url": "http://satis warehouse address/"
}
],
"require": {
"company/package": "1.2.0",
"company/package2": "1.5.2",
"company/package3": "dev-master"
}
}Затем передайте требуется композитор возможно установка композитора Как раз тот склад, который вам нужен.
Будьте осторожны: В исходном коде есть только “список хранилищ”, и нет реального хранилища кода синхронизации, поэтому загрузка все равно должна идти на компьютер, который управляет кодом, например, GitHub, внутренняя GitLab и так далее. Поэтому вам нужно убедиться, что соответствующий ssh-ключ был добавлен или что информация для входа записана в файле конфигурации (что не рекомендуется).
Советы: безопасный-http
Satis по умолчанию требует https, но для HTTPS требуются сертификаты, что не очень легко сделать, например, как не хотел бы делать бывший менеджер операций Вэй (конечно, они очень заняты, я понимаю). На этом этапе мы можем установить secure-http с помощью false Принудите композитора принять http-источник. Необходимо внимание. безопасный-http да конфиг Бесполезно писать один из атрибутов в корне.
{
"config": {
"secure-http": false
}
}В заключение, создание частного исходного кода Satis очень необходимо для команды разработчиков, использующих PHP. Управление зависимостями с помощью Composer также очень эффективно, и я надеюсь, что все разработчики PHP хорошо его изучат. Сейчас я использую его неглубоко, и я буду продолжать добавлять его в будущем.
Отступление от темы
Давайте поговорим немного не по теме. PHP – хороший язык, простой и эффективный, легкий в освоении и мощный. Однако из-за плохого происхождения высокая отправная точка в инженерном деле стала причиной, по которой люди презирают его. Многие разработчики не требуют от себя написания бизнес-логики без учета языковых характеристик, что делает код уродливым и сложным для ремонта и обслуживания. Поэтому я хочу сказать еще два предложения, чтобы рассмотреть историю самого PHP. (Ниже приведен мой личный опыт)
Древние времена
Мы пишем абзац PHP на странице или действие по написанию PHP, собираем запросы, выполняем обработку, даем ответы, завершаем.
Выгоды:
Простой, удобный в использовании
Логическая взаимосвязь ясна, и целевую программу можно найти непосредственно из интерфейса.
Когда что-то идет не так в одном месте, в основном это всего лишь одна функция.
Недостатки:
Низкая частота повторного использования кода и плохое техническое обслуживание
Трудно модифицировать партиями
Классическое общество
По мере того как проект становится все больше и требует много PHP, становится трудно управлять и поддерживать фрагментированный код. Итак, мы начали извлекать некоторый общий код и создавать функцию под названием functions.php Все остальные страницы включают Это, так что общий код не будет здесь и там.
Выгоды:
Повысьте возможность повторного использования кода, сократите время разработки, повысьте эффективность и уменьшите сложность обслуживания
Недостатки:
Если проект большой, на
functions.phpТысячи строк, а читабельность не так хороша.Иногда нам нужно внести незначительные изменения в функцию, поэтому расширяется не только библиотека, но и сама функция.
Средневековые времена
PHP вводит понятие классов и предоставляет “магические методы” для реализации некоторых функций. Некоторые программисты также понимают, что не весь код можно написать самостоятельно, и что на ссылку нужно ссылаться, поэтому они начинают использовать код из некоторых копий библиотеки с открытым исходным кодом. В настоящее время даже кода Google не существует. Большая часть кода загрузки ищется в Интернете + Ctrl C/V, поэтому код смешан. Часто появляются, я включаю Затем файл вешается. Оказывается, классы неоднократно переопределяются или функции с одинаковыми именами в глобальной среде накладываются друг на друга. Хаос развития продолжается, как в темное Средневековье.
Выгоды:
Без учета технического обслуживания скорость разработки все еще возможна…
Недостатки:
Чем больше ям, тем сложнее будет вернуться.
Внутренняя среда выполнения неоднородна.
a.phpa.php
Эпоха Возрождения
Поддержка PHP классов была усовершенствована, и люди привыкают использовать пространства имен для разделения доменов. Благодаря использованию шаблонов проектирования, наследования и интерфейсов значительно улучшилась ситуация с функциями копирования и управлением кодом. В то же время с появлением и развитием Google Code и GitHub у вас появилось хорошее место для управления кодом и поиска кода. Мы также начинаем использовать SVN для управления кодом, и мы больше не собираемся его придумывать. action.php action.php.бак action_new.php action_new.20160102.php Такой мотылек. Начните учиться разрабатывать спецификации и запускайте больше кода управления классами.
Выгоды:
Спецификация кода
Улучшенная отслеживаемость записей об изменениях кода после управления версиями
Код, который можно загрузить в новую версию
Недостатки:
SVN не удобен для управления несколькими складами
Тестирование также основывается на ручных раскопках
современное общество
Git становится популярным, и мы можем легче управлять нашим кодом. GitHub быстро растет, и из него легко найти код. С концепцией суб-репозитория Git зависимости обслуживания намного проще. Платформа MVC стала популярной, единая запись стала популярной, а внутренняя среда выполнения была унифицирована. Разработчики осознают важность тестирования и начинают использовать инструменты тестирования для разработки тестов, что еще больше повышает стабильность кода.
Выгоды:
Внутренняя среда выполнения унифицирована, глобальная модификация проста
Начните писать тесты
Недостатки:
Стоимость обучения растет, и новички начинают задаваться вопросом, почему написание сценария может что-то сделать. Вы должны построить такую сложную структуру.
современное общество
Инструменты управления пакетами становятся стандартными. Зависимости проекта больше не управляются путем копирования кода или вложенных репозиториев, а напрямую с помощью средства управления пакетами Compposer. А интеграция сценариев тестирования и развертывания облегчает нам завершение всего процесса разработки. С другой стороны, внешний интерфейс вырос раньше, PHP может учитывать больше внутренней бизнес-логики, выводить чистый интерфейс данных.
Выгоды:
Доступность стабильности для крупномасштабных проектов значительно возросла
Профессиональное разделение труда усилилось, программисты PHP могут рассмотреть больше внутренней логики
Недостатки:
Кривая обучения более крутая, и новым людям сложнее войти в нее. Даже опытные пожилые люди могут оказаться не в состоянии адаптироваться к развитию новых форм.
Однако колесо истории не остановить, и мы обязаны двигаться к будущему с более высокими затратами на обучение и более крутой кривой обучения, но с большим и более стабильным объемом бизнеса.
Синхронизируйте обновления с моим блогом.
Оригинал: “https://developpaper.com/using-satis-to-build-private-warehouses/”