За последние 24 часа нас посетили 22403 программиста и 1027 роботов. Сейчас ищут 673 программиста ...

Проектирование

Тема в разделе "PHP для новичков", создана пользователем Konstant1n, 17 мар 2019.

  1. Konstant1n

    Konstant1n Активный пользователь

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    Всем, привет.
    Хочу спроектировать (создать) структуру классов.
    На сайте будут:
    1. публикации - страницы, новости, посты, объявления. Все они будут хранится в БД;
    2. файлы - картинки, документы (doc, pdf). Данные о файле (имя, тип, количество скачиваний) будут хранится в БД.

    Так вот, я думаю создать базовые классы Publication и File. От Publication производные Page, New, Post, Announcement. От File производные - Image, Document.

    Видно, что общее у Publication и File - работа с БД (crud).

    Куда вынести эти действия? в Трейт? или можно без трейта обойтись?

    Использую паттерн MVC.
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @Konstant1n, если бы всё было на столько просто как вы себе это представляете, то профессии программиста не было бы как таковой. Любая домохозяйка, могла бы стряпать приложения в перерывах между приготовлением 1-го и 2-го блюда.
    Вы задаёте вопрос ответом на который будет объём информации пары тройки книг в 1000 страниц, начинать перепечатывать сюда, или всё-таки послать вас в книжный магазин?
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Начните с проектирования БД. Между Page, New, Post, Announcement, а также между Image, Document может вообще не быть никакой разницы кроме названий таблицы или каталога, в котором хранятся файлы (картинки и проч. файлы обычно храним в разных каталогах, например images и files).
     
  4. Konstant1n

    Konstant1n Активный пользователь

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    ок. помогите мне тогда с эти:
    название таблиц хранить в производных классах? и каким должен быть модификатор доступа этого поля? должен ли присутствовать публичный метод getTableName()?
     
  5. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @Konstant1n, вы нахватались верхушек и оперируете понятиями смысл которых сами в большинстве случаев не понимаете.
     
  6. Babka_Gadalka

    Babka_Gadalka Активный пользователь

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    в конфиг файлах. Фреймворки, откуда что берут в начальном этапе
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    В отдельный класс по работе с БД. А вообще, читайте Зандстру, там очень подробная и интересная модель работы с базой построена.
    --- Добавлено ---
    Хотя, в реальных проектах я её не особо использую, мне хватает с головой реализаций ActiveRecord из фреймворков. Может потому что у меня не настолько крупные проекты, чтобы ярко проявились недостатки паттерна ActiveRecord. В принципе, можно и самостоятельно его написать, описание паттерна в литературе и нете есть.
     
    Konstant1n нравится это.