Я строю сайт с PHP и MySQL бэкэнд. Но в настоящее время я не использую какие-либо рамки. Должен ли я использовать Model View Controller?
Я строю сайт с PHP и MySQL бэкэнд. Но в настоящее время я не использую какие-либо рамки. Должен ли я использовать Model View Controller?
Ответы:
Мое эмпирическое правило:
Любая страница, которая попадает в базу данных или требует какой-либо формы пользовательского ввода, будет легче управлять с помощью структуры MVC.
Вам не обязательно использовать целую платформу, если сайт довольно прост, вы можете использовать простой класс Page Controller для каждой страницы, для которой он требуется ( см. Выше ). Имейте в виду, что это не масштабируемое решение, так что имейте в виду долгосрочные цели проекта.
Вот примерный набросок (быстро взломанный вместе) установки PageController:
index.php
--------------------------------------------------------
include 'Controller.php';
include 'Db.php';//db connection
include 'View.php';
$Controller = new MyController(new Db(), new View());
$Controller->route($_GET);
$Controller->render();
Controller.php
--------------------------------------------------------
class Controller($db){
/* ensure all collaborators are provided */
public function __construct(Db $db, View $view){
$this->db = $db;
$this->db->connect(array('host','db','user','pass'));
$this->view = $view;
}
/* load the appropriate model data */
public function route($_GET){
//load the right model data and template
switch($_GET){
case $_GET['articles'] === 'cats':
$this->vars = $this->db->get('cats');
$this->template = 'cats.php';
break;
case $_GET['articles'] === 'dogs':
break;
$this->vars = $this->db->get('dogs');
$this->template = 'dogs.php';
default:
$this->vars = array();
}
}
/* render an html string */
public function render(){
echo $this->view->render($this->template,$this->vars);
}
}
View.php
------------------------------------------------------------
class View.php
{
/* return a string of html */
public function render($template,$vars){
// this will work - but you could easily swap out this hack for
// a more fully featured View class
$this->vars = $vars;
ob_start();
include $template;
$html = ob_get_clean();
return $html;
}
}
template cats.php
--------------------------------------------------------
$html = '';
$row_template = '%name%,%breed%,%color%';
foreach($this->vars as $row){
$html .= str_replace(
array(%name%,%breed%,%color%),
array($row['name'],$row['breed'],$row['color']),
$row_template);
}
echo $html;
Db.php
---------------------------------------------------------------
I haven't bothered writing a db class... you could just use PDO
Я бы сказал, что было бы хорошо, если бы был шанс, что сайт может вырасти за пределы нетривиального размера. Основная причина в том, что вы получаете лучшую возможность изменять и поддерживать сайт в будущем, а обслуживание - это большая часть работы над большинством проектов. Это дает вам хорошее разделение проблем, организацию сайта и помогает избежать повторяющихся и запутанных кодов.
MVC - это шаблон, хорошо известный и принятый для веб-сайтов, который поможет вам привлечь других людей в проект. Для этого вы, вероятно, захотите выбрать установленную основу для начала.
Вы не предоставили каких-либо подробностей, которые могли бы помочь ответить на вопрос, но моя рекомендация по умолчанию в таком случае - «да, используйте инфраструктуру MVC». Используйте нестандартное решение только тогда, когда вы действительно уверены, что оно вам нужно.
Как архитектура, MVC фокусируется на разделении вашего проекта / веб-страницы на несколько частей. Это может облегчить вашу жизнь, когда вам придется что-то изменить в коде или пользовательском интерфейсе.
Основное правило: если вы ожидаете изменений в спецификациях вашего проекта, особенно когда эти изменения влияют на весь код, тогда используйте архитектуру, которая заставляет вас разбивать код на крошечные фрагменты lego.
Не в этот момент. Подождите, пока ваш сайт не станет больше и грязнее. Вы спросите себя - что я могу сделать, чтобы сделать вещи менее беспорядочными? Вы прочтете статью о MVC и вам это понравится. Вы не будете сомневаться, использовать ли его больше или нет. Ты узнаешь. Это был бы момент, чтобы начать использовать его.