phpのMVCモードの運用テクニック
2517 ワード
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){ //異常をどう処理するかはあなたのことです。