Когда готового плагина уже недостаточно

Собственный модуль нужен, если бизнес-логика специфична, готовое решение требует постоянных правок core/vendor или не может обеспечить нужную интеграцию и модель данных.

Готовое решение или свой модуль

СитуацияЛучше
Стандартная форма/SEO/basic cacheготовый plugin
Специфичный workflow бизнесасвой модуль
Нужна мелкая настройка готового APIадаптер/extension
одит, но надо править coreсвой слой/модуль
Критичная интеграция CRM/ERPотдельный модуль с логами и retry
Одноразовый скриптне обязательно полноценный модуль

Границы модуля

Модуль должен владеть своей конфигурацией, таблицами/миграциями, логированием и публичным API. Он не должен требовать ручной правки ядра после каждого обновления CMS.

Пример нейтральной структуры модуля

TEXT
my-module/
├── src/
│   ├── Service/
│   ├── Repository/
│   └── Http/
├── migrations/
├── config/
├── templates/
├── assets/
├── tests/
├── install.php
├── update.php
├── uninstall.php
└── README.md

Что предусмотреть до первой версии

  • установку без ручного SQL;
  • версионирование schema migrations;
  • безопасное обновление;
  • rollback критичных миграций;
  • настройки вне исходного кода;
  • log level и диагностический режим;
  • права доступа;
  • очистку/сохранение данных при uninstall;
  • README для следующего разработчика.

Не смешивайте интеграцию и интерфейс

Если модуль работает с CRM/API/платежами, отделите transport/client слой от бизнес-логики. Тогда смена внешнего API не заставит переписывать весь интерфейс.

Скачать примеры для веб-разработки

RuJul Web Development Examples — один ZIP

Связанные материалы

Когда собственный модуль выгоднее готового

Сравните готовые решения по поддержке версий CMS, безопасности, доступности исходного кода, качеству документации и возможности обновления без правок ядра. Если для достижения цели приходится регулярно изменять vendor-файлы или обходить модель прав, стоимость сопровождения готового модуля может оказаться выше собственной разработки.

В техническом задании укажите формат данных, интерфейс менеджера, права, миграции и способ безопасного обновления. Отдельно проверьте, что отключение модуля не ломает базовые функции сайта.