Всем, привет. Хочу спроектировать (создать) структуру классов. На сайте будут: 1. публикации - страницы, новости, посты, объявления. Все они будут хранится в БД; 2. файлы - картинки, документы (doc, pdf). Данные о файле (имя, тип, количество скачиваний) будут хранится в БД. Так вот, я думаю создать базовые классы Publication и File. От Publication производные Page, New, Post, Announcement. От File производные - Image, Document. Видно, что общее у Publication и File - работа с БД (crud). Куда вынести эти действия? в Трейт? или можно без трейта обойтись? Использую паттерн MVC.
@Konstant1n, если бы всё было на столько просто как вы себе это представляете, то профессии программиста не было бы как таковой. Любая домохозяйка, могла бы стряпать приложения в перерывах между приготовлением 1-го и 2-го блюда. Вы задаёте вопрос ответом на который будет объём информации пары тройки книг в 1000 страниц, начинать перепечатывать сюда, или всё-таки послать вас в книжный магазин?
Начните с проектирования БД. Между Page, New, Post, Announcement, а также между Image, Document может вообще не быть никакой разницы кроме названий таблицы или каталога, в котором хранятся файлы (картинки и проч. файлы обычно храним в разных каталогах, например images и files).
ок. помогите мне тогда с эти: название таблиц хранить в производных классах? и каким должен быть модификатор доступа этого поля? должен ли присутствовать публичный метод getTableName()?
@Konstant1n, вы нахватались верхушек и оперируете понятиями смысл которых сами в большинстве случаев не понимаете.
В отдельный класс по работе с БД. А вообще, читайте Зандстру, там очень подробная и интересная модель работы с базой построена. --- Добавлено --- Хотя, в реальных проектах я её не особо использую, мне хватает с головой реализаций ActiveRecord из фреймворков. Может потому что у меня не настолько крупные проекты, чтобы ярко проявились недостатки паттерна ActiveRecord. В принципе, можно и самостоятельно его написать, описание паттерна в литературе и нете есть.