jeyroik / extas-installer
Extas installer package
Installs: 2 644
Dependents: 32
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 1
pkg:composer/jeyroik/extas-installer
Requires
Requires (Dev)
This package is auto-updated.
Last update: 2025-10-20 13:44:58 UTC
README
Описание
Данный пакет позволяет устаналивать совместимые с Extas'ом сущности.
Требования
- PHP 7.4+
- MongoDB 3+
Установка
Установка пакета
# composer require jeyroik/extas-installer:*
Инициализация Extas'a
# vendor/bin/extas init
Эта команда создаст дефолтные контейнеры классов и установит корневые плагины и расширения.
У инициализации имеются следующие стадии (для всех стадий имеются соответствующие интерфейсы):
extas.init: на этой стадии можно провести дополнительные операции по инициализации пакета.extas.init.section: на этой стадии можно провести дополнительные операции по инициализации секции.extas.init.item: на этой стадии можно провести дополнительные операции по инициализации конкретного элемента.
После данной операции установлены все минимально-необходимые плагины и расширения. Если необходимо, чтобы плагин/расширение были установлены данной командой, то необходимо в конфигурации плагина/расширения добавить:
install_on: initialization- Пример:
{
"plugins": [
{
"class": "my\\Plugin",
"stage": "my.stage",
"install_on": "initialization"
}
]
}
Установка сущностей
# vednor/bin/extas install -a my_app (короткая форма: extas i -a my_app)
Установка состоит из двух шагов:
- Сбор конфигураций пакетов.
- Установка найденных пакетов.
Имеется возможность с помощью плагинов подключиться к любому моменту в этих двух шагах (для всех стадий имеются соответствующие интерфейсы), стадии указаны по порядку срабатывания:
extas.crawl.packages: срабатывает после сбора конфигураций.extas.install.<application.name>:<application.name>берётся из опции-aкоманды установки.extas.install: на данном этапе есть возможность подключить собственный установщик для реализации какой-то особенной логики установки пакетов.extas.install.package.<package.name>:<package.name>берётся из конфигурации пакета. На данном этапе можно провести дополнительные операции по установки пакета.extas.install.package: стадия, аналогичная предыдущей.extas.install.section.<section.name>:<section.name>- имя секции в конфигурации. На данном этапе можно провести дополнительные операции по установке секции.extas.install.section: стадия, аналогичная предыдущей.extas.install.section.<section.name>.item: на данном этапе можно провести дополнительные операции по установке конкретного элемента сущности.extas.install.item: стадия, аналогичная предыдущей.
Удаление сущностей
# vendor/bin/extas uninstall(короткая формаextas u)
Для удаления также доступны стадии:
extas.uninstall.<application.name>extas.uninstall.package.<package.name>extas.uninstall.packageextas.uninstall.section.<section.name>extas.uninstall.sectionextas.uninstall.item.<section.name>extas.uninstall.item
Создание и установка пользовательской сущности
- Создаём класс сущности.
namespace my\extas; use extas\components\Item; class My extends Item { protected function getSubjectForExtension(): string { return 'my'; } }
- Создаём репозиторий для сущности.
Из коробки Extas поддерживает MongoDB.
namespace my\extas; use extas\components\repositories\Repository; class MyRepository extends Repository { protected string $pk = 'name'; protected string $itemClass = My::class; protected string $scope = 'my'; protected string $name = 'names'; }
В результате использования данного репозитория, будет создана коллекция my__names.
- Придумываем имя секции для нашей сущности в конфигурации.
Пусть будет my_names.
- Создаём плагин для установки нашей сущности.
namespace my\extas; use extas\components\plugins\install\InstallSection; class PluginInstallMyNames extends InstallSection { protected string $selfSection = 'my_names'; protected string $selfName = 'my name'; protected string $selfRepositoryClass = 'myRepository'; protected string $selfUID = 'name'; protected string $selfItemClass = My::class; }
- Добавляем плагин и интерфейс репозитория в нашу конфигурацию для extas'a.
По умолчанию, конфигурация находится в корне в файле с именем extas.json.
Вы можете использовать любое имя - в этом случае не забудьте указать его в флаге -p при установке (см. ниже).
example.json
{
"name": "example",
"plugins": [
{"class": "my\\extas\\PluginInstallMyNames", "stage": "extas.install.section.my_names"}
],
"my_names": [
{"name": "Example 1"},
{"name": "Example 2"}
],
"package_classes": [
{"interface": "myRepository", "class": "my\\extas\\MyRepository"}
]
}
- Устанавливаем плагин.
# vendor/bin/extas i