답변:
내 경험 법칙 :
데이터베이스에 도달하거나 사용자 입력 형식이 필요한 모든 페이지는 MVC 구조로 관리하기가 더 쉽습니다.
사이트가 상당히 단순하다면 반드시 전체 프레임 워크를 사용할 필요는 없습니다. 사이트가 필요한 경우 페이지마다 간단한 페이지 컨트롤러 클래스를 사용할 수 있습니다 ( 위 참조 ). 이것은 확장 가능한 솔루션이 아니므로 프로젝트의 장기 목표를 명심하십시오.
다음은 (빠른 해킹 된) 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는 프로젝트 / 웹 페이지를 여러 부분으로 나누는 데 중점을 둡니다. 이를 통해 코드 나 사용자 인터페이스에서 무언가를 변경해야 할 때 인생을 더 쉽게 만들 수 있습니다.
경험상, 특히 변경 사항이 전체 코드에 영향을 줄 때 프로젝트 사양이 변경 될 것으로 예상되는 경우 코드를 작은 레고 조각으로 나눌 아키텍처를 사용하십시오.