Модульная архитектура Codeigniter и адаптация модулей к YII

в 14:07, , рубрики: Песочница, метки: , , ,

Дорогие хабровчане, хотел бы на ваш суд выставить свою переработку/доработку известного фреймворка Codeigniter с попыткой адаптации модулей к фреймворку YII и «независимыми» модулями.

CI/YII Module Codeigniter v.1.0 (MCI v 1.0)

Расширенная версия Codeigniter для использования модульной системы (модульная архитектура). Архитектура адаптирована к фреймворку YII с минимальными «издержками». Версия первая, могут быть конечно баги, но всё таки её использую часто в своих проектах.

Добавлена функциональность в v 1.0:

  • использование модульной архитектуры (роутинг /nameModule/nameController/nameAction) в целом одинакова с YII, кроме вложенности модулей
  • использование виджетов идентично YII, так же добавлен метод-перехватчик isShow() для инкапсуляции логики отображения виджета, вызывается перед отображением
  • роутинг к модулю можно перезаписывать в конфигурации
  • добавлен автолоад классов с добавлением импортируемых путей в application/config/import.php
  • добавлен ClientManager управляющий ресурсами системы (возможность разделения использования CDN)
  • использование layout архитектуры шаблонов (есть, пока, одно не удобство, имена шаблонов должны быть уникальными)
  • встроены Unit Tests окружение (CIUnit) с небольшой доработкой окружения и bootstrap
  • модели БД, в настоящий момент, реализуют архитектуру ActiveRecord YII (не полностью, основные методы, пока без использования конструктора запросов)
  • введение моделей представления ViewModel для использования связи контроллера с шаблоном
  • использование коротких «сквозных» функций для использование во всей системе, аналог статических методов YII::method() даёт безболезнено использовать модули при переносе в любую систему и лаконичность чтения кода

Я знаю, что могут быть вопросы, что лучше подгружать модели и классы через стандартный Codeigniter метод, но я посчитал удобным отдавать логику подгрузки классов автолоадеру с учётом того что это более гибче так как использование стандартной функциональности создаёт зависимость. Загрузка классов с помощью Codeigniter сохраняется.

Окружение для тестов взято с CIUnit.
Изменения можно найти на github: MCI v 1.0.

Поделиться

* - обязательные к заполнению поля