Answers:
我的经验法则:
使用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的文章,并且会喜欢它。您将不再质疑是否要使用它。你会知道。那是时候开始使用它了。