Я читал о нескольких фреймворках PHP, особенно о Zend Framework, но я не понимаю, как правильно двигаться вперед.
Zend Framework не использует ActiveRecords, а вместо этого использует шаблон Table Data Gateway и Row Data Gateway, а также использует DataMapper для сопоставления содержимого Row Data Gateway с моделью, потому что ActiveRecord ломается, когда ваши модели не имеют 1: 1 сопоставление с таблицами вашей базы данных. пример этого в Руководство по быстрому запуску Zend.
Для меня их пример выглядит очень раздутым с кучей геттеров и сеттеров повсюду. Я сталкивался с различными сообщениями в блогах о проектировании, управляемом предметной областью, в котором утверждалось, что использование такого большого количества геттеров и сеттеров является плохой практикой, потому что оно выставляет все данные внутренней модели наружу, поэтому у него нет преимущества перед общедоступными атрибутами. Вот один пример.
Мой вопрос: если вы удалите эти геттеры и сеттеры, как вы будете отображать свои представления? В какой-то момент данные должны попасть в представление, чтобы вы действительно могли что-то показать пользователю. Следование совету DDD, кажется, нарушает разделение между M и V в MVC. Следование примеру MVC и Zend, кажется, ломает DDD и заставляет меня вводить множество геттеров, сеттеров и DataMappers для всех моих моделей. Помимо того, что это много работы, это также, кажется, нарушает DRY.
Я был бы очень признателен за некоторые (ссылки на) хорошие примеры или дополнительную информацию о том, как все это сочетается друг с другом. Я пытаюсь улучшить свои навыки в архитектуре и дизайне здесь.