Что я могу сделать, чтобы улучшить свой MVC? - PullRequest
1 голос
/ 26 июня 2010

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

Это лучший способ сделать это?

Или каждая отдельная часть (новости, контакты, о) должна иметь свой собственный контроллер, который загружает определенную модель и представление. По сути, вместо группировки методов в один файл используются несколько файлов.

Я немного растерялся, как мне это делать.

Приветствия

Ответы [ 4 ]

2 голосов
/ 28 июня 2010

Если вы думаете о продвижении своей собственной модели MVC, как, как сказал @e-sat, вам нужно будет испытать то, что происходит в уже разработанных системах.Однако, основываясь на моем опыте в разработке модели MVC и определении того, что есть в сообществе open source, я вернусь к своему MVC по двум причинам.Одна из причин - гибкость настройки, а другая - собственная конфиденциальность MVC.

Я использовал следующий подход для шаблона проектирования MVC.

Файл Router.php, идентифицирующий URL-адреса пользовательских запросов.Этот маршрутизатор сможет извлекать контроллеры, включать файл и вызывать метод контроллера по умолчанию.

Загруженный контроллер также может загружать другие контроллеры, если требуется для работы.Это делается с использованием глобального метода, в котором весь класс контроллера будет расширен до класса MainController, который может вызывать другие контроллеры.

Я использую глобальный реестр для установки и получения переменных от одного контроллера к другому.

Модели используются для получения данных из таблицы, и большинство моих моделей будут представлять функции базы данных, включая CRUD (Create Read Update Delete).Таким образом, контроллер может легко манипулировать данными таблицы базы данных с помощью модели.

Соглашения об именах во всех контроллерах, моделях и представлениях также важны, если вы хотите, чтобы система была более интеллектуальной для определения требуемого действия, знаяимя файла.

Я использую виды отдельно для каждого типа контроллера.И эти представления будут отправлены в основной файл шаблона просмотра.Как и в моделях, контроллер сможет устанавливать представления в главное представление.

Существуют и другие настройки, например применение методов безопасности перед вызовом класса или после вызова класса / controller / model /.просмотр и т. д. Это выполняется MainController, который всегда просматривает папку с классом автозагрузки, в котором указано, какие файлы должны быть загружены до и после различных действий в процессе построения контента и доставки вывода.

MVC - это не мелкомасштабная идея, а идея дизайна, которая всегда может быть разработана.Существует так много фреймворков с открытым исходным кодом PHP MVC, если вы знаете, как искать в основных поисковых системах, таких как google.com

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

2 голосов
/ 26 июня 2010

Начните использовать MVC, который работает и хорошо известен, как в Symfony или Cake.Исходя из этого, вы решите:

  • что делать по-своему, зная лучшие практики;
  • отказаться от своего, если вы чувствуете, что можете сэкономить время, используя тезисы.
1 голос
/ 26 июня 2010

Модель загружает свой файл вида

Контроллер должен выступать в качестве посредника между моделью и представлением.

Модель не должна знать, как ее отображает представление, а также Представление не должно знать о какой-либо логике Модели.

Теоретически, если ваш MVC хорошо структурирован, вы должны иметь возможность представлять одну и ту же модель с различными типами представлений (например, HTML, XML, JSON).

0 голосов
/ 26 июня 2010

Построить FrontController, который анализирует uri запроса и решает, какой контроллер загрузить и какой метод запустить.С .htaccess переписать весь запрос в index.php

//index.php
class FrontController{
  function run(){
    //parse request uri here /comment/new
    //load controller  comment
    //run controllers method new and pass some request attributes
  }
}

// ../controllers/comment.php
class Controller_Comment extends Controller{
  function new($request){
    //do stuff here
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...