phpのMVCモードの運用テクニック


phpのMVCモードの運用はまず私が例を挙げます。簡単な文章表示システムが簡単な期間であると仮定して、この文章システムは読み取り専用であると仮定します。つまり、この例は文章の発表には関わりません。今から始めます。データベースの読み取りだけですので、二つのインターフェースを定義しました。 DataOperation{   public 機能 select($info)   public 機能 selectNum($info);上記のインターフェースはデータを読み出すインターフェースを定義していますが、selectメソッドは必要な文章に戻ります。selectNumメソッドは記事の総数を返します。これは改ページ表示に使うものです。infoはクエリー条件Interfaceを保存するための配列です。 DataSource{   public static 機能 get Instance();ここでは、我々が動作するのはデータベースであると仮定し、DataSourceはインターフェースを定義し、このインターフェースを実現するすべてのインスタンスクラスは、静的なオブジェクトInterfaceを得るだろう。 Controller{   public 機能 ポップ()   public 機能 push();   public 機能 execute();インターフェース View{   public 機能 display();はい、私達は実現します。次のクラスを定義して、DataSourceインターフェースを実現します。このタイプは単例のパターンのクラスを使っています。 DataBaseSource implements DataSource{   public static $instance = null   public static 機能 get Instance()   {        if(self:$instance) == null       {            self:$instance == new PDO(「mysql:host=local host」)dbname=article","root","123456","       }        return self:$instance;   } } 抽象的なクラスを定義してDataOperationを実現します。データベース接続を共有したいので、このデータベースオブジェクトを抽象的なクラスで初期化します。このようにして、すべてのサブクラスはこのオブジェクトabstractを共有できます。 クラス DataBaseOperation implements DataOperation{   protected $db = null     public 機能 __construct()   {        $this->db = DataBaseSource:get Instance();   }    public 機能 select($info);次はビジネスクラスを書いて、抽象的なクラスを実現します。 Tech extens DataBaseOperation{   public 機能 select($info)   {        //ここであなたのコードを実現します。   }    public 機能 selectNum($info)   {        //ここであなたのコードを実現します。   } } ビジネスロジック層を実現しました。次はコントロール層のクラスです。 View Controller implements Controller{   prvate $mod = array();   public 機能 push($key、$value)   {        //あなたのコードを実現して、クラスを$this->modに登録します。   }    public 機能 pop($key)   {                //コードを実現すると、nullとなります。   }    public 機能 execute($key)   {        //ここであなたのコードを実現して、実例を生成します。php 5の新しい特性を利用して、異常な処理に注意してください。   } } はい、次は表現層です。ここでInterfaceを実現します。 View abstract ArtcleView implements View{   protected $smarty = null   public 機能 __construct()   {        $this->smarty = new Smarty();       ///以下ではsmartyの属性値を定義できます。   } } 具体的なページ、たとえば科学技術の文章の表示ページのクラス TechArtcleView extens ArtcleView{   public 機能 display()   {        //あなたのコードを実現して、Techクラスとより多くのDataBaseOperationサブクラスを呼び出します。   } } はい、次は総入り口です。  index.php try{   $view Controller = new View Controller()   $view Controller->push(「tech」,TecharticleView);   //増加し続ける      $mod = $_GET["mod]:$uGET["mod]:$uPOST["mod];   //最後に   $view Controller->execute($key);catch(Exception) $e){       //異常をどう処理するかはあなたのことです。