посоветуйте по архиктектуре приложения

texrdcom

Новичок
посоветуйте по архиктектуре приложения

Пишеться система,
Которая включает в себя ядро, модули.
Вопрос по организации вызовов модлей внутри других модулей,
сейчас реализованно так:
Запускаеться ядро - в общем настраивает среду выполнения
модулей и запускает востребованный модуль в запроссе пользователя:
1) Перед запуском модуля создаеться глобальная переменная
куда складываються данные их - не много которые могут быть востребованны модулями во время их работы.
2) Модуль - контролер модуля это класс который наследует класс контролера по умолчанию во время вызова конструктора
модуля - вызываеться конструктор контролера по умолчанию,
который с Глобальной переменной записывает данные в атрибут - доступный классам которые его наследуют, и уничтожает глобальную переменную.
3) Когда модуль внутри себя хочет вызвать другой модуль в системе он вызывает методо с родительского класса который создает новую глобальную переменую если надо меняет в ней параметры !, - повторюсь это глобальная переменная которая нужна для старта конструктора класса который являеться предком для всех модулей в системе (для контролеров модулей!).
Вопрос в следующем можно ли считать что такая реализация отношений модулей нормальна ?.
Как вы реализовуете отношения модулей в своих системах ?

-~{}~ 08.12.05 15:54:

p/s
Естественно во время старта системы проверяеться перед созданиям данной глобальной переменной существует ли она если да то уничтожаеться то есть ее не льзя подменить во время старта системы, также идет такая проверка с чисткой когда вызываеться модуль в модуле - то есть прверка есть такая автоглобал переменая если есть удаляеться и создаеться новая!.
Подменить ее через автоглобал_он нельзя.
 

Кром

Новичок
Непонятен весь этот процесс с глобальной переменной. Зачем она тебе вообще в ООП? Если это конфигационные переменные, то они должны находтися в объекте $CONF, к примеру, а не висеть в воздухе доступные всем и вся.

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

>Как вы реализовуете отношения модулей в своих системах ?

По-разному. Хороших решений - сотни.
 

texrdcom

Новичок
Глобальная переменная (понимаю не есть хорошо)
нужна для того чтобы не накладывать обязоности на конструктор модулей принять данные передать родителю.
С помощью ее данные акумулируються и становяться доступными для конструктора родителя,
после чего переменная удаляеться.
По-разному. Хороших решений - сотни.
например ?.

-~{}~ 08.12.05 17:29:

В догонку у меня эта глобальная переменная доступна только до старат конструктора модуля после чего она удаляеться,
возникает во время старта системы и живет не дольше чем пока не стартанет контролер модуля.
 

Кром

Новичок
нужна для того чтобы не накладывать обязоности на конструктор модулей принять данные передать родителю.
С помощью ее данные акумулируються и становяться доступными для конструктора родителя,
после чего переменная удаляеться.
Эти умные слова на самом деле не объясняют необходимость этой глобальный переменной.

>например ?.

Примеры архитектур ты можешь посмореть в документациях к различным CMS, которые можно найти в интернете.
 

Кром

Новичок
Вот я тебе и советую - минимизировать количество глобальных переменных в твоем скрипте.
 

texrdcom

Новичок
Да убрал,
сделал так что ядро настраивает среду и вызывает нужный модуль и все,
модули могут вызваться как в модулях так и вне их независимо от ядра хотя среда приложения влияет на них.
Нутром чуял и знал что глабальнные перменные не нужны, но так легче было сделать :)
 

Кром

Новичок
>Да убрал,

Молодец.

>Нутром чуял и знал что глабальнные перменные не нужны, но так легче было сделать

Это легче только на первых порах. А с ростом сложности системы важность инкапсуляции вырастает многократно. Спрятав все переменные внутри объектов тебе будет легче поддерживать контрактные обязательства между ними. При этом реализация может постоянно видоизменяться. Это касается любых переменных в проекте.
 
Сверху