WebサイトアーキテクチャへのPHP MVCパターンの実装(1)_PHPチュートリアル

WBOY
リリース: 2016-07-15 13:25:10
オリジナル
887 人が閲覧しました

MVC パターンは、Web サイトのアーキテクチャでは非常に一般的です。これにより、3 層アプリケーションを構築できるようになり、有用な層がコードから分離され、設計者と開発者の共同作業が容易になり、既存のアプリケーションを保守および拡張する能力が向上します。

View

「View」は主に、スクリプトによって生成された HTML など、Web ブラウザーに送信される最終結果を指します。ビューについて話すとき、多くの人はテンプレートを思い浮かべますが、テンプレート ソリューションをビューと呼ぶのが正しいかどうかは疑問です。おそらく、ビューに関して最も重要なことは、ビューがレンダリングされるときに、ビューの要素がより大きなフレームワーク内での役割を認識している必要があることです。

XML を例にとると、XML が解析されるとき、DOM API はそのような知識を持っていると言えます?? DOM ツリー内のノードは、XML がどこにあるか、何が含まれているかを知っています。 (XML ドキュメント内のノードが SAX で解析される場合、そのノードが解析される場合にのみ意味を持ちます。)

テンプレート スキームの大部分は、次のような単純な手続き型言語とテンプレート タグを使用します。

<p>{some_text}</p> <p>{some_more_text}</p>
ログイン後にコピー
これらはドキュメントでは何の意味もありません。意味するのは、PHP がそれを別のものに置き換えることだけです。

ビューに関するこの大まかな説明に同意する場合は、ほとんどのテンプレート ソリューションがビューとモデルを効果的に分離していないことにも同意することになります。テンプレート タグは、モデルに格納されているものに置き換えられます。

ビューを実装するときは、次のような質問を自問してください。「ビュー全体を置き換えるのは簡単ですか?」「新しいビューを実装するのにどのくらい時間がかかりますか?」「ビューの記述言語を置き換えるのは簡単ですか?」例、同じビュー内) HTML ドキュメントを SOAP ドキュメントに置き換えます)"

モデル

モデルはプログラム ロジックを表します。 (エンタープライズ レベルのプログラムではビジネス層と呼ばれることがよくあります)

一般に、モデルのタスクは、元のデータを、ビューによって表示される特定の意味を含むデータに変換することです。通常、モデルは、クエリを実装するための抽象データ クラス (データ アクセス層) を介して、データ クエリをカプセル化します。たとえば、英国の年間降雨量を計算したい場合 (素敵な休暇の場所を見つけるためだけに)、モデルは 10 年間の毎日の降雨量を受け取り、平均を計算し、それをビューに渡します。

Controller (コントローラー)

簡単に言えば、コントローラーは、Web アプリケーションの受信 HTTP リクエストによって呼び出される最初の部分です。一部の GET 変数など、受信したリクエストをチェックし、適切なフィードバックを行います。最初のコントローラーを作成するまでは、他の PHP コードを書き始めるのは困難です。最も一般的な使用法は、index.php の switch ステートメントのような構造です。

<?php switch ($_GET['viewpage']) {     case "news":         $page=new NewsRenderer;     break;     case "links":         $page=new LinksRenderer;     break;     default:         $page=new HomePageRenderer;     break; } $page->display(); ?>
ログイン後にコピー
このコードは、手続き型コードとオブジェクト指向コードが混在していますが、小規模なサイトの場合、通常、これが最良の選択です。ただし、上記のコードはまだ最適化できます。

コントローラーは実際には、モデル データとビュー要素の間のバインディングをトリガーするために使用されるコントロールです。

MVC パターンを使用した簡単な例を次に示します。

まず、通常のクラスであるデータベース アクセス クラスが必要です。

<?php /** *  A simple class for querying MySQL */ class DataAccess {     /**     * Private     * $db stores a database resource     */     var $db;     /**     * Private     * $query stores a query resource     */     var $query; // Query resource     //! A constructor.     /**     * Constucts a new DataAccess object     * @param $host string hostname for dbserver     * @param $user string dbserver user     * @param $pass string dbserver user password     * @param $db string database name     */     function DataAccess ($host,$user,$pass,$db) {         $this->db=mysql_pconnect($host,$user,$pass);         mysql_select_db($db,$this->db);     }     //! An accessor     /**     * Fetches a query resources and stores it in a local member     * @param $sql string the database query to run     * @return void     */     function fetch($sql) {    $this->query=mysql_unbuffered_query($sql,$this->db)
ログイン後にコピー
rreeee
1


http://www.bkjia.com/PHPjc/446699.html

本当http://www.bkjia.com/PHPjc/446699.html技術記事 MVC パターンは、Web サイトのアーキテクチャでは非常に一般的です。これにより、コードから有用なレイヤーを分離して 3 層アプリケーションを構築できるようになり、デザイナーと開発者が協力して提供できるようになります...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート