php での MVC パターンの適用
まず、例を示します。
単純な記事表示システム
単純期間中、この記事システムは読み取り専用であると想定します。つまり、この例では、記事は含まれません。リリースは開始されます。
データベースの読み取りのみを行うため、2 つのインターフェイス
Interface DataOperation
{
public function select($info);
public function selectNum ($info); を定義しました。 ;
}
上記のインターフェースはデータを読み取るためのインターフェースを定義しており、select メソッドは必要な記事を返します。 selectNum メソッドは、ページング表示に使用される記事の総数を返します。$info はクエリ条件を格納するために使用される配列です。
Interface DataSource
{
public static function getInstance()
}
ここでは次のように仮定します。 DataSource はインターフェースを定義します。このインターフェースを実装するすべてのインスタンス クラスは、静的オブジェクト
public function Pop(); を取得します。関数プッシュ();
パブリック関数実行();
インターフェイス ビュー
{
パブリック関数 display();
それでは実装してみましょう。
以下は DataSource インターフェイスを実装するクラスを定義します。このクラスはシングルトン パターンを使用します。
class DataBaseSourceimplement DataSource
{
public static $instance = null;
public static function getInstance()
{
if(self::$instance == null)
{
self::$instance == new PDO(" mysql:host=localhost;dbname=article","root","123456"); >DataOperation を実装する抽象クラスを定義します。データベース接続を共有する必要があるため、抽象クラスでデータベース オブジェクトを初期化します。すべてのサブクラスはこのオブジェクトを共有できます。
抽象クラス DataBaseOperation 実装 DataOperation
{
protected $db = null;
public function __construct()
{
$this ->db = DataBaseSource::getInstance();
}
public function select($info)
}
抽象を実装するビジネス サブクラスを作成します。 class DataBaseOperation
class Tech extends DataBaseOperation
{
public function select($info)
{
// ここにコードを実装します
}
public function selectNum($info)
{
/ /ここにコードを実装します
}
}
ビジネス ロジック層を実装しました。以下はコントロールです。レイヤー
クラス ViewController はコントローラー
{
private $mod = array();
public function Push($key,$value); // コードを実装し、クラスを $this-> mod に登録します。 }
public function Pop($key)
{ 🎜> public functionexecute($key)
{ //ここにコードを実装し、サンプルを生成します。php5 の新機能である例外処理に注意してください。
}
}
わかりました。以下はプレゼンテーション層です。ここでは、インターフェイス ビュー
が抽象化されています。 ArticleView は View
{
protected $smarty = null;
public function __construct()
{
$this- >smarty = new Smarty(); /// 以下Smarty
}
}
科学技術記事の表示ページなどの特定のページ
class TechArticleView extends ArticleView
{
のいくつかの属性値を定義できます。 public function display()
{
// コードを実装し、Tech クラスとその他の DataBaseOperation サブクラスを呼び出します
}
}
わかりました、これがメインの入り口です。index.php
try
{
$viewController = new ViewController();
$viewController->push("tech",TechArticleView);
// 連続増加
$mod = $_GET[ "mod"]:$_GET["mod"]:$_POST["mod"]
//最後に
$viewController->execute($ key)
}
catch( Exception $e)
{
// 例外をどのように処理するかはあなたの仕事です
}