Есть класс framework, который является точкой входа в приложение.
Класс settings получает и записывает настройки приложения из/в базу данных. Экземпляр создаётся внутри класса framework.
Класс componentFactory - фабрика, которая создаёт компоненты (базовый класс компонента - component).
Проблема в том, что компонент должен уметь получать значение настроек из базы (т.е. уметь работать с методами класса settings), а также уметь вызывать некоторые методы класса framework.
Правильно ли будет все необходимые методы из других классов "пробросить" в класс framework (паттерн фасад) и передать в конструктор экземпляр класса framework классу фабрики componentFactory?
создайте интерфейс для всех методов, а потом реализацию отдельно, которая дергает framework
А передавайте компонентной фабрике передавайте этот объект под интерфейсом
Вообще неправильная архитектура( мне кажется для пхп дешевле было бы сделать класс настроек синглтоном и загружать их из базы при старте, затем после завершения работы компонента-записывать обратно
Дак класс настроек запрашивает настройки ровно 1 раз из конструктора при создании экземпляра из класса framework. Далее компоненты только читают переменную из памяти с настройками (через метод get_setting этого класса).
Не совсем понятно, что должно являться реализацией интерфейса? Чем плохо передавать объект фреймворка в каждый экземпляр класса, который реализует те или иные функции приложения?
Понял, что нужно использовать паттерн посредник (медиатор) и описать в классе посредника все методы, которые будут использоваться другими классами. Но сейчас часть таких методов определены в классе фреймворк, не совсем понятно как отделить фреймворк от посредника и нужно ли это делать? или класс фреймворк будет являться фасадом и посредником одновременно (всё в куче)?