php での MVC パターンの適用
まず、例を示します:
シンプルな記事表示システム
シンプル期間中、この記事システムは読み取り専用であると仮定します。つまり、この例では記事の公開は行われません。さあ始めましょう。
データベースの読み込みだけなのでインターフェースを2つ定義しました
Interface DataOperation
{
Public function select($info);
上記のインターフェース定義データ インターフェイスの場合、select メソッドは必要な記事を返します。 selectNum メソッドは、ページング表示に使用される記事の総数を返します。$info はクエリ条件を格納するために使用される配列です
Interface DataSource
{
public static function getInstance();
}
ここではデータベースを操作していると仮定し、DataSource はインターフェースとこれを実装するすべてのインスタンスを定義しますインターフェイス クラスは静的オブジェクトを取得します
インターフェイス コントローラー
{
パブリック関数 pop();
パブリック関数 use();
インターフェイス ビュー
{
パブリック関数 display();
}
それでは、実装しましょう。
以下は、DataSource インターフェースを実装するクラスを定義します。 function getInstance ()
}
return self::$instance;
}
}
DataOperationを実装するための抽象クラスを定義します。データベース オブジェクトを抽象クラスに格納するので、すべてのサブクラスがこのオブジェクトを共有できること
抽象クラス DataBaseOperation は DataOperation を実装します
protected $db = null;
public function __construct()
{
$this->db = DataBaseSource::getInstance()
}
public function select($info);
}
抽象クラス DataBaseOperation を実装するビジネス サブクラスを作成しましょう
class Tech extends DataBaseOperation
{
public function select($info)
{
// 実装しますhere Code
}
public function selectNum($info)
{
// ここにコードを実装します
}
}
ビジネスロジック層を実装しました、以下は制御層です
class ViewController実装er
{
private $mod = array();
public function Push($key,$value);
{
//コードを実装し、クラスを $this->mod に登録します }
public function Pop($ Key)
{) // コードを実装します。 $ this-& gt; mod [$ key] の値は null です。 php5 の新機能、例外処理に注意してください
}
}
はプレゼンテーション層であり、Interface View
abstract ArticleView は View
{
protected $smarty = null;
public function __construct()
$this->
public function display()
{
試してみる
{
$viewController = new ViewController();
$viewController->push("tech",TechArticleView);
//継続的な増加
$mod = $_GET["mod"]:$_GET["mod"]:$_POST["mod "];
//最後に
$viewController->execute($key);
}
catch(Exception $e)
{
//例外をどのように処理するかはあなたの仕事です
}