回答:
私の経験則:
データベースにアクセスするページやユーザー入力の形式を必要とするページは、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はプロジェクト/ Webページを複数の部分に分割することに焦点を当てています。これにより、コードまたはユーザーインターフェイスで何かを変更する必要がある場合に、生活が楽になります。
大まかに言って、特にそれらの変更がコード全体に影響する場合にプロジェクトの仕様の変更が予想される場合は、コードを小さなレゴの断片に強制的に分割するアーキテクチャを採用してください。