Модули Yii
15 июня 2016
Модули Yii существуют для решения двух задач:
- Группировка похожих функций приложения.
- Изоляция функций для их последующего использования в других проектах.
Когда команда Yii думала над модулями, задача рассматривалась целиком: то есть и группировка и изоляция. Но как только сообщество начало использовать модули, оказалось, что используются они, в основном, для группировки.
Оно и понятно: нормальную изоляцию сделать тяжело. Модуль не должен в этом случае использовать что-либо извне напрямую. Если что-либо необходимо, модуль предоставляет интерфейс, который реализуется в приложении, использующем модуль. То же применимо и к обратной ситуации: извне использовать что-либо из модуля напрямую строго запрещено: только через интерфейс.
Комментарии RSS по email OK
Мы их используем для версионности api, это уместно?
Игорь, это как раз группировка. Вполне уместно.
Мы используем модули, что сгруппировать похожий функционал, но сделать некоторый код общий. Пример: есть сайт api.site.ru и lk.site.ru, у сайтов практически общие модели, но абсолютно разный вывод и функционал.
api и lk мы оформили как модули к одному общему проекту. Так нормально делать?
Ну да. Это нормально, хотя это и не изолированные модули.
Тоже используем модули для группировки, весь функционал сайта разбит на 11 модулей, есть связанность между собой. Проект один, мультисайтовый, поэтому и использовать в других проектах и не планировали.
Александр, хочу у вас спросить на счет использования AR в Yii2. Много по этому поводу споров, поэтому хочу услышать Ваше мнение как разработчика Yii2.
Объем записей в таблицах от 500к, почти каждый запрос это 2-3 Joina. Раньше делал через геттеры AR, выборка за раз порядка 100 записей. Но заметил такую штуку, что если использовать createCommand, то память заметно меньше расходуется и скорость быстрее. К сожалению, сейчас не могу показать реальный тесты, так как тестировали это месяц назад, но в итоге, большую часть моделей мы переписали на DAO, отказавшись от AR.
Так, так ли плох AR или его использование подходит для небольших проектов? У нас также постоянно идет вставка, порядка 5000 записей в час. Пока для этого используем AR.
Когда использование AR уместно, а когда нет?
А можно простенький пример или хотябы ссылочку на то как делать эти самые интерфейсы взаимодействия модулей. Как я понимаю речь тут идет про DI контейнер... хочется пример
Небезынтересный цикл статей про модули
Доклад будет про этот же подход, только немного дополненный. Может можно будет потом запись найти.
Спасибо за статьи, запись доклада обязательно посмотрю.
Дмитрий, про AR напишу отдельный пост.
Александр, спасибо. Буду ждать!
Дмитрий, используйте AR + ->asArray() yiiframework.domain-na.me/doc/guide/2.0/ru/tutorial-performance-tuning#using-arrays
Sam, все-таки хочется посмотреть примеры интерфейсов, предоставляемых модулем
Юрий, всё зависит от модуля. Я делал такое для 1.1. Идея ровно та же.