Composer-пакеты модулей¶
DevCraft предоставляет общие сервисы в DevCraft\Core\Composer для установки пакетов, синхронизации с БД и проверки политик. Admin-UI использует те же классы, что и пользовательские модули.
Manifest: composer_required¶
В manifest.php модуля:
| PHP | |
|---|---|
hardRequired: true— пакет учитывается в метрике Dashboard и колонке «Обязательный».- При дубликате имени пакета в нескольких модулях атрибуция берётся от первого модуля в порядке реестра;
required=true, если хотя бы один модуль объявилhardRequired: true.
Подробнее: Манифест модуля — composer_required.
Синхронизация json → lock → БД¶
ComposerDbSyncService::syncFromRuntimeSnapshot()— полный sync:- union из
devcraft/composer.jsonrequire(безphp/ext-*) и manifest-only пакетов; installed/versionизcomposer.lockчерезComposerStateReader.- После успешного AJAX-действия —
applySuccessfulAction()с повторным чтением lock.
Ручной sync: DevCraft Admin → Composer → Синхронизировать с composer.lock.
Использование в модуле (AJAX)¶
Важно: не импортировать DevCraft\Modules\Admin\*; защита только через DLE admin_sections в manifest.
Классы Core¶
| Класс | Назначение |
|---|---|
| ComposerActionResult | DTO результата |
| ComposerRuntimeAdapter | CLI Composer |
| ComposerStateReader | Чтение lock |
| ManifestPackageReader | Агрегация manifest |
| ComposerDbSyncService | Sync с БД |
| PackagePolicyService | Политики |
| DefaultPackagePolicyStore | JSON-политики |
| ComposerData | ORM-сущность |
См. также¶
- ComposerActionHandler — эталон в Admin (если документирован)
- Registry — порядок модулей для атрибуции