Я изучаю популярный MVC и пытаюсь реализовать его на PHP. Я проектирую фреймворк с чистым способом ООП (хотя я не эксперт в способности ООП PHP. У меня есть только умеренные знания об этом). Пример реализации этого каркаса показан на следующем рисунке.
В этой структуре я добавил уровень доступа к данным, DAL (класс для работы с соединением, выполняя запрос и транспортировку в базу данных и из нее), чтобы абстрагировать физическую базу данных от остальной части системы для легкого изменения источника данных. Если система привязана только к одной базе данных одного конкретного типа, ожидается, что этот уровень будет представлен в системе с использованием только одного объекта с одним подключением к базе данных. И этот объект будет зависимым для всех объектов Data Mapper (т.е. User Mapper, Product Mapper).
Я ищу ваши комментарии о том, где можно инициировать объект DAL в системе. Я могу создать объект во фронт-контроллере (index.php) и перенести весь путь до объектов Data Mapper. Но это анти-шаблон в соответствии с Вот а также Вот. Даже по той же причине мы не можем инициировать объект DAL на фабриках (фабрики могут быть разделены на несколько классов для обработки сложностей согласно Чистый код подход ). Я не могу использовать Синглтон, поскольку это также создаст много проблем в соответствии с этот. Итак, по вашему мнению, каков наилучший способ и место, где я могу инициировать этот объект и передать его объектам Data Mapper?
Н.Б .: Я игнорирую View Logic здесь, так как мое беспокойство не имеет никакого отношения к Views.
Задача ещё не решена.
Других решений пока нет …