Как создать универсальное расширение для сайтов?

Привет. Имею следующее:
  • Сайт, написанный на Yii2
  • Модуль, написанный для этого сайта

Данный модуль производит некоторые модификации с файлами сайта. Он состоит из нескольких страниц. Я хочу сделать этот модуль универсальным, чтобы он работал не только с этим сайтом. Но совсем не понимаю как это сделать.

У меня есть следующие идеи:

1. Переписать на микрофреймворке и положить в папку с сайтом
Переписать модуль, используя какой нибудь микрофреймворк (FatFree, Slim и т.д.). Получившийся модуль я просто перекидываю на сервер и прописываю правила маршрутизации (не совсем понимаю как). В итоге модуль будет доступен по адресу: example.com/module
Подобный принцип реализован в системе управления статическими страницами Textolite. Но там всего одна страница, а у меня их несколько.

2. Разместить модуль на поддомене
Я беру весь модуль и отправляю его на поддомен. Тут нет смысла переписывать его на микрофреймворке. Проще просто сделать его в виде Yii2 сайта.

Возможно описанные способы являются нежизнеспособными, т.к. просто описал свои мысли из головы и не уверен, что такое вообще практикуется. Плюс не совсем понимаю, что делать, если модуль написан на PHP, а сайт, например, на Питоне. Будет ли работать модуль в таком случае?

Долго искал хоть какую то информацию по данному вопросу, но ничего так и не нашел. Я окончательно запутался и не могу ничего понять. Можете пожалуйста подсказать в каком направлении мне двигаться?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
1. Этот вариант в принципе хорошо применим для более современных фреймворков, но Yii2 достаточно старый. Он не поддерживает PSR стандарты из-за которых он очень плохо совместим с другими. То есть для Yii написать такой модуль и подключить к симфонии невозможно, так же как и наоборот. К тому же на Yii используется Active Record, а на Symfony Doctrine. Поэтому вам можно вынести только какие-то компоненты и подключать их в своих проектах. С отдельным модулем будет сложно. Модуль Yii можно будет использовать только там. Если вы пойдёте таким способом, то вам нужно вынести этот пакет в репозиторий и подключать этот пакет через композер. Внутри проекта останется настроить конфиг, настроить зависимости через DI. Пример.

2. Второй вариант более гибче. Это уже больше про микросервисы. Приложения будут взаимодействовать через API. В таком случае вам вообще без разницы какой там фреймворк и база. Современные большие системы именно так и устроены. Однако это сложна система, на которую требуется много знаний и времени.

На вашем месте, проектируя на Yii2 я бы не стал об этом париться. Во-первых, этот иодвль врят ли кому будет нужен. Во-вторых, он не совместим с другими фреймворками. Если вам требуется такой модуль - просто копируйте его в другой проект. Если почувствуете, что часто изменяется и нужна совместимость с другими проектами - выносите в пакет и подключайте через композер.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы