структура классов

Kirill

Новичок
структура классов

Есть старая, написанная непонятно кем цмс. Алгоритм работы:
При любых переданных параметрах обработка происходит в файле index.php(modrewrite или 404 htaccess). В файле происходит include всех классов, кофигов и проч. Затем создается объект класса Manager и вызывается его метод. Этот класс в зависимости от переданных параметров создает объект другого класса, который и генерит контент.
Класс Manager наследуется от класса Common, класс Common наследуется от класса Xml, класс Xml от класса Inc. В классе Inc происходит присвоение свойству $this->prop переданных классу параметров(конфиг данные, настройки и т.д.), кроме того в этом классе создаются объекты классов для работы с почтой, файлами и изображениями.

Любой другой класс, который выбирает класс Manager, является наследником той же самой цепочки классов, что и Manager.
Я понимаю, что сделано это неправильно и хочу переделать.

Что я хочу сделать:
1) Переписать следующим образом. Чтобы каждый раз не создавать эту цепочку наследников, структура будет следующей:
Manager – не наследуется не от кого. Вызывает класс, в соответствии с переданными параметрами. Вызванный класс, наследуется от класса Inc (
PHP:
<?
Class Name extends Inc{
	Function Name($prop){
		parent::Inc($prop);
}
}
?>
), в этом классе происходит установка свойства prop ($this->prop). Объекты для работы с почтой, базой, XML будут создаваться в каждом классе по мере надобности.

2) Не подключать сразу все классы, т.к. их много и многие по 2-3 тыс. строк. Подключить сначала базовые, а потом, в классе Manager, когда будет известно имя нужного класса, подключить его. Возникает вопрос, если я в функции класса напишу инклуд – ошибки не будет? Как мне сделать так чтобы класс подключился глобально, т.е. был доступен по всему коду (вне класса, или в другом классе)?

У кого есть замечания по данной структуре(которую я хочу сделать) выскажите пожалуйста.
 

whirlwind

TDD infected, paranoid
Собственно, непонятно в чем проблема? По поводу инклуда - неужели трудно проверить? И что такое "класс подключился глобально"? Класс - это декларация нового типа. Естественно предположить, что этот тип будет доступен в любом месте программы. Если речь об экземпляре, класс которого неизвестен, то можно сделать фабрику.
 

Kirill

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