ホームページ  >  記事  >  バックエンド開発  >  PHP での MVC プログラミングを理解する - MVC フレームワークの概要

PHP での MVC プログラミングを理解する - MVC フレームワークの概要

巴扎黑
巴扎黑オリジナル
2016-12-01 11:11:411195ブラウズ

【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方式まで対応しています。多くの人にとって、それは新しくて馴染みのない概念かもしれませんが、一度そのような概念に切り替えると、元に戻すのは非常に困難になります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。