Структура PHP MVC - PullRequest
       1

Структура PHP MVC

0 голосов
/ 14 ноября 2011

В рамках университетского проекта я разрабатываю веб-приложение на PHP и стараюсь максимально следовать принципам MVC.Я не использую готовую платформу, потому что я хочу, чтобы большая часть проекта была моей работой, чтобы помочь получить более высокую оценку.

Чтобы удалить элемент (каждый элемент имеет идентификатор,status, title, parent_id) из базы данных Я иду сделать следующий процесс ....

  • Пользователь нажимает кнопку удаления и просит подтвердить
  • При нажатии подтвердил "страницу"загрузка, вызывающая контроллер, инициирует модель, которая хранится в объекте контроллера
  • . Метод в объекте модели вызывается для загрузки элемента из базы данных на основе идентификатора в URL
  • Затем я сохраняю модель в базе данных, которая фактически удаляет ее.

Я также хочу удалить вседочерние элементы в базе данных элемента, который был только что удален.Где лучшее место для этого?В контроллере?В отдельном файле функций?В файле модели?

Я довольно новичок во всей идее MVC, поэтому любая помощь / совет очень ценится.

Ответы [ 3 ]

3 голосов
/ 14 ноября 2011

Базовая разбивка MVC:

  • Модель: бизнес-логика
  • Вид: логика представления
  • Контроллер: логика склеивания (запускает функциональность модели на основе ввода пользователя, рендеринг представлений на основе вывода модели).

Оператор «Удаление элемента приведет к удалению всех его дочерних элементов» - это описание того, что должно произойти в бизнес-логике.Следовательно, он принадлежит модели.

Реализация зависит от того, как вы реализовали получение дочерних элементов и удаление элементов в вашей модели, но обычно она состоит из получения коллекции дочерних элементов вашей модели в методе удаления и вызова метода удаления для каждого дочернего элемента.в коллекции (каждый ребенок также будет искать детей и удалять их, когда это произойдет).Теперь представлению и контроллеру не нужно беспокоиться о том, есть ли у модели дочерние элементы, поскольку все это учитывается в бизнес-логике модели.

1 голос
/ 14 ноября 2011

Я бы, вероятно, сделал это вне паттерна PHP MVC.Используя таблицы innoDB MySQL, вы можете добиться этого, используя Foreign Keys :

CREATE TABLE parent (id INT NOT NULL,
                     PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
                    INDEX par_ind (parent_id),
                    FOREIGN KEY (parent_id) REFERENCES parent(id)
                      ON DELETE CASCADE
) ENGINE=INNODB;
1 голос
/ 14 ноября 2011

Чтобы быть хорошим разработчиком, нужно знать, когда не , чтобы изобретать велосипед. И это, безусловно, одна из таких ситуаций. Я предлагаю вам сначала спросить своего профессора (ов), разрешено ли вам использовать готовые рамки или нет. «Я хочу, чтобы большая часть проекта была моей работой» - это в значительной степени бессмыслица. Если вы действительно хотите, чтобы это была ваша собственная работа, сделайте это на ассемблере:).

Если вам все еще нужно писать все с нуля (на PHP), я предлагаю вам сначала взглянуть на хорошо зарекомендовавшие себя рамки MVC (например, Symfony ), чтобы понять, как такая среда должно сработать. Может быть, посмотрите на исходный код тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...