Есть некий мини велосипедный Inversion of Control объект. То-есть когда он создается классы вот таким вот образом
IoC->Create('Model_Test');
То автоматом инициализируется все зависимые классы.
IoC->Create('Model_Test'); = new Model_Test(new DB, new Model_Test3);
Правда их инициализирует сам класс(точнее методы реализованы в базовом классе), таким образом это больше Service Locator конечно или даже Class Factory но не в этом суть. Вопрос вот в чем
Исходя из правильности подхода какие классы должны быть инициализированные определяются на основе ранее привязанных к ним интерфейсов. То-есть если в конструкторе идет IBaseDB интерфейс и мы привязали его ранее к классу BaseDB то при инициализации понятно что нужно его пихать.
Беда в следующем, если у нас есть 2 подключения к базе одновременно. То-есть этот интерфейс IBaseDB реализует одновременно 2 класса. Тогда перед самым вызовом нужно связывать этот интерфейс с другим классом, создавать класс а потом связывать обратно или возможно есть лучший путь?
Есть еще вариант сделать еще 1 интерфейс с другим именем и тогда при инициализации класса не нужно будет делать дополнительные связи. Но такой подход кажется неправильный так как придется делать полный дубль первого интерфейса со всеми его методами.