【MVCとは何ですか? 】
MVC とは、「3 つの部分 (MVC の正式名称、Model、View、Controller)」を調和して組み合わせて、複雑なアプリケーションを作成できるようにする概念です。車は現実の MVC の非常に良い例です。私たちが車を見るとき、内装と外装という 2 つの View (表示) 部分を見ます。これらはどちらもコントローラー、つまりドライバーから切り離すことができません。ブレーキ システム、ステアリング ホイール、その他の制御システムはモデルを表します。これらはドライバー (コントローラー) から制御方法を取得し、それを内装と外装 (ビュー) に適用します。
【Web 上の MVC】
MVC フレームワークでカバーされる概念は非常にシンプルで、非常に柔軟です。基本的な概念は、パラメーター要求に基づいてフレームワーク内のすべてのアプリケーションを制御する単一のコントローラー (index.php など) があるということです。通常、このコントローラーには、モデル、イベント、および GET パラメーターを定義するパラメーターが (最小限) 含まれています。このようにして、コントローラーはすべてのリクエストを確認し、適切なイベントを実行できます。たとえば、 /index.php?module=foo&event=bar のようなリクエストは、おそらく foo という名前のクラスをロードし、 foo::bar() [bar( )function です] を実行するために使用されます。この利点は次のとおりです:
すべてのアプリケーションに対応するインターフェイス
各コードには独自の相対パス、データベースリンク、検証などが含まれるため、アプリケーション内で無数のコードを同時に管理するのは非常に面倒です。そうすることで、この点での手間が省け、コードをマージして再利用できるようになります
【なぜ作者独自の MVC フレームワークを作成するのですか? ]
これまでのところ、PHP で書かれた MVC フレームワークをあまり見たことがありません。実際、私が知っているのは 1 つだけです。Solar は完全に PHP5 で書かれています。もう 1 つは Cake です。PHP になろうとする RoR です (Rubyalign=centerbgColor=#e3e3e3border=1>
<?php require_once('config.php');//Otherrequires,DBinfo,etc. $APP_DB='mydb'; $APP_REQUIRE_LOGIN=false;//Settotrueifscriptrequireslogin $APP_TEMPLATE_FILE='foo.php';//Smartytemplate $APP_TITLE='MyApplication'; if($APP_REQUIRE_LOGIN==true){ if(!isset($_SESSION['userID'])){ header("Location:/path/to/login.php"); exit(); } } $db=DB::connect('mysql://'.$DB_USER.':'.$DB_PASS.'@localhost/'.$APP_DB); if(!PEAR::isError($db)){ $db->setFetchMode(DB_FETCHMODE_ASSOC); }else{ die($db->getMessage()); } //Putyourlogichere //Outputthetemplate include_once(APP_TEMPLATE_PATH.'/header.php'); include_once(APP_TEMPLATE_PATH.'/'.$APP_TEMPLATE_FILE); include_once(APP_TEMPLATE_PATH.'/footer.php'); ?>
神様、このコードを見るだけでゾクゾクしてしまいます。このコードのコンセプトは、すべてのアプリケーションがプログラムをこのアプローチに適応させることができます。たとえば、template.txt を myapp.php にコピーし、いくつかの変数を変更するだけで、うまくいきます。ただし、このよく整理されたアプローチには、いくつかの重大な欠点があります。
上司が作成者に、場合によっては PDF、場合によっては HTML、場合によっては SOAP を使用して出力することを要求した場合はどうすればよいですか (XML リクエストを直接送信する)
このアプリケーションが必要な場合はどうすればよいですか? IMAP または LDAP 認証、どうすればよいですか?
さまざまなコード (編集、アップグレード、削除を含む) をどのように処理すればよいですか?
複数の認証レベル (管理者と非管理者) を処理するにはどうすればよいですか?出力キャッシュを有効にするにはどうすればよいですか? www.phpv.net 転載する場合はソースを示してください
[新しい方法]
すべてをこの MVC フレームワークに組み込むと、作業が非常に簡単であることがわかります: 次のコードを比較してください:
<?php classmyappextendsFR_Auth_User { publicfunction__construct() { parent::__construct(); } publicfunction__default() { //Dosomethinghere } publicfunctiondelete() {} publicfunction__destruct() { parent::__destruct(); } } ?>
LDAP への認証を行う場合は、FR_Auth_LDAP を設定します。コントローラーは特定の出力メソッド ($_GET['output'] など) を認識でき、いつでも PDF または SOAP に変換できます。たとえば、このモジュールには FR_User クラスがあるため、イベント ハンドラーは削除のみを行います。 Smartyはテンプレートエンジンとしてキャッシュを制御しますが、コントローラーもキャッシュの一部を制御することができます
上記の古い方式からMVC方式まで対応しています。多くの人にとって、それは新しくて馴染みのない概念かもしれませんが、一度そのような概念に切り替えると、元に戻すのは非常に困難になります。