ホームページ >バックエンド開発 >PHPチュートリアル >PHPマスター| MVCパターンとPHP、パート1
Model-View-Controller(MVC)アーキテクチャモデルとPHP実装の例の詳細な説明
コアポイント
MVCモデルはもともと1970年代後半に提案され、データの表示をデータとの対話方法から分離することに基づいたソフトウェアアーキテクチャモデルです。理論的には、確立されたMVCシステムにより、フロントエンド開発者とバックエンド開発者は、どちらかの当事者が処理しているファイルを共有または編集することなく、同じシステムで作業できるようにする必要があります。 MVCはもともとパーソナルコンピューティング用に設計されていましたが、懸念の分離と間接的に再利用可能なコードに重点を置いているため、Web開発者によって広く採用されています。このモデルは、モジュラーシステムの開発を促進し、開発者が機能をすばやく更新、追加、または削除できるようにします。この記事では、MVCの基本原則を紹介し、このパターンの定義の概要を説明し、PHPでMVCの例をすばやく紹介します。この投稿は、以前にMVCを使用してコーディングしたことがない人、または以前のMVC開発スキルを確認したい人のためのものです。
MVCを理解してくださいこの図は、データの一元配置フローレイアウト、コンポーネント間でデータがどのように渡されるか、コンポーネント間でどのように機能するかを示しています。
モデル(モデル)
モデルとは、全体的な設計で使用されるデータの永続的なストレージを指します。データへのアクセスを表示または収集および作成する必要があり、MVCモードのビューコンポーネントとコントローラーコンポーネントの間のブリッジです。モデルの重要な側面は、技術的には「ブラインド」であることです。つまり、データがビューまたはコントローラーコンポーネントに渡された後に起こることとモデルが接続または理解されていないことを意味します。他の部品からの応答も求めていません。ただし、モデルをデータベースとして単純に一般化したり、データプロセスを処理する別のシステムへのゲートウェイとして一般化することはできません。モデルは、データのゲートキーパーとして機能し、質問はせず、すべてのリクエストを受け入れる必要があります。モデルコンポーネントは通常、MVCシステムの最も複雑な部分であり、システム全体の中核でもあります。これがなければ、コントローラーとビューの間に接続がないからです。
view(view)
ビューは、モデルから要求されたデータと最終出力を決定する場所です。従来、MVCを使用して構築されたWebアプリケーションでは、ビューはHTMLの生成と表示のシステム部分です。ビューはユーザーの反応もトリガーし、ユーザーはコントローラーと対話し続けます。基本的な例は、ユーザーがコントローラーでアクションをクリックしてトリガーするというビューによって生成されたボタンです。ビューコンポーネント、特にMVCパターンを使用してアプリケーションを構築するWeb開発者については、いくつかの誤解があります。たとえば、多くの人々は、ビューにモデルとの接続がなく、ビューによって表示されるすべてのデータがコントローラーから渡されると誤って信じています。実際、このプロセスは、MVCパターンの背後にある理論を完全に無視します。 Fabio Cevascoの記事「CakePhpフレームワーク:あなたの最初の試み」は、CakePhpフレームワークのMVCへのこの難読化アプローチを示しています。
"MVCアーキテクチャを正しく適用するために、モデルとビューの間に相互作用がないことに注意する必要があります。すべてのロジックはコントローラーによって処理されます"コントローラー(コントローラー)さらに、ビューをテンプレートファイルとして説明することは不正確です。しかし、トム・バトラーが指摘しているように、これは人のせいではなく、多くの開発者が犯した多くの間違いであり、開発者のMVCの学習が誤っていることにつながります。それから彼らは他人を誤って教育し続けます。ビューは実際にはテンプレート以上のものですが、最新のMVCにインスパイアされたフレームワークにより、ビューが非常に認識できないため、フレームワークが実際に適切なMVCパターンに従うかどうかは誰も本当に気にしません。また、ビューパーツがコントローラーからデータを受信しないことを覚えておくことも重要です。中間モデルなしでモデルを議論するときに述べたように、ビューとコントローラーの間に直接的な関係はありません。
トリプルの最後のコンポーネントはコントローラーです。その仕事は、ユーザーが入力または送信したデータを処理し、それに応じてモデルを更新することです。コントローラーのライフラインはユーザーの相互作用なしで、コントローラーには目的がありません。これは、ユーザーが対話するパターンの唯一の部分です。コントローラーは、情報のコレクターとして単純に一般化することができます。これは、ストレージの組織のモデルに渡され、入力を収集するために必要なロジック以外のロジックを含めません。コントローラーは、単一のビューと単一のモデルにのみ接続されているため、各データ交換ポイントにハンドシェイクと署名がある一方向のデータフローシステムになります。ユーザーが最初にビューと対話するときに、コントローラーがタスクを実行する手順を取得すること、および各コントローラーの機能がユーザーのビューとの相互作用によってトリガーされるトリガーであることを覚えておくことが重要です。開発者が犯す最も一般的な間違いは、コントローラーをゲートウェイと間違え、最終的にビューが想定する機能と責任を割り当てることです(これは通常、ビューコンポーネントをテンプレートとして考慮して同じ開発者の結果です)。さらに、一般的な間違いは、モデルからビューのみへのデータの圧縮、配信、処理に関与する機能をコントローラーに提供することです。MVCモードでは、この関係はモデルとビューの間に保持する必要があります。 の PHP Webアプリケーションは、MVCベースのアーキテクチャを使用して記述できます。簡単な例から始めましょう: 各スキーマセクションの非常に基本的なクラスを含むプロジェクトを開始しました。今、私たちはそれらの間の関係を設定する必要があります: アプリケーションのユーザーインタラクションを定義していないため、コントローラー固有の機能はありません。このビューには、例は純粋に表示目的であるため、すべての関数が含まれています。次に、例を拡張して、コントローラーに機能を追加してアプリケーションにインタラクティブ性を追加する方法を示しましょう。
MVCパターンの背後にある基本理論を導入し、非常に基本的なMVCアプリケーションを作成しましたが、細心の機能に入る前にまだ長い道のりがあります。このシリーズの次の記事では、PHPのWebで実際のMVCアプリケーションを作成しようとするときに直面するオプションのいくつかについて説明します。乞うご期待! Fotoliaからの写真 この記事のコメントは閉じられています。 MVCモードとPHPに問題はありますか?フォーラムで質問してみませんか?
PHP MVCモード(FAQ) Model-View-Controller(MVC)モードは、アプリケーションを3つの相互に関連するコンポーネントに分割する設計パターンです。この分離により、開発者は他のコンポーネントに影響を与えることなく、1つのコンポーネントを変更または更新できます。 PHPでは、MVCパターンはコードを整理し、維持とスケーリングを容易にするため、特に便利です。また、データ管理とユーザーインターフェイス設計の効率を向上させることもできます。 PHPでは、MVCモードはアプリケーションを3つのコンポーネントに分割することで機能します。モデルはデータとビジネスロジックを処理し、ビューはユーザーインターフェイスとデータのレンダリングを管理し、コントローラーはユーザーがモデルを要求および更新し、それに応じて表示します。この懸念の分離により、コード管理がより効率的になり、デバッグが容易になります。
PHP MVCでユーザー入力を処理する方法は? PHP MVCビューにデータを表示する方法は?
PHP MVCでは、モデルのデータは、コントローラーによって呼び出される関数を介して更新されます。これらの機能には、データの作成、読み取り、更新、削除などの操作が含まれます。 PHP MVCアプリケーションを安全にするには、複数のステップが含まれます。これらの手順には、ユーザー入力の検証とクリーンアップ、準備されたステートメントまたはパラメーター化されたクエリを使用してSQLインジェクションを防ぐこと、およびMVCフレームワークの組み込みセキュリティ機能を使用することが含まれます。また、既知の脆弱性を防ぐために、フレームワークと依存関係を最新の状態に保つことも重要です。 <code class="language-php"><?php
class Model {
public $string;
public function __construct() {
$this->string = "MVC + PHP = Awesome!";
}
}</code>
<code class="language-php"><?php
class View {
private $model;
private $controller;
public function __construct($controller, $model) {
$this->controller = $controller;
$this->model = $model;
}
public function output() {
return "<p>" . $this->model->string . "</p>";
}
}</code>
<code class="language-php"><?php
class Controller {
private $model;
public function __construct($model) {
$this->model = $model;
}
}</code>
<code class="language-php"><?php
$model = new Model();
$controller = new Controller($model);
$view = new View($controller, $model);
echo $view->output();</code>
上記の例で見ることができるように、<code class="language-php"><?php
class Model {
public $string;
public function __construct() {
$this->string = "MVC + PHP = Awesome, click here!";
}
public function updateString($newString) {
$this->string = $newString;
}
}</code>
<code class="language-php"><?php
class View {
private $model;
private $controller;
public function __construct($controller, $model) {
$this->controller = $controller;
$this->model = $model;
}
public function output() {
return '<p><a href="https://www.php.cn/link/5ca1b0a18c411c3ebfc35c9dad7da921">' . $this->model->string . "</a></p>";
}
}</code>
<code class="language-php"><?php
class Controller {
private $model;
public function __construct($model) {
$this->model = $model;
}
public function clicked() {
$this->model->updateString("Updated Data, thanks to MVC and PHP!");
}
}</code>
いくつかの基本的な機能を備えたアプリケーションを強化しました。次に、コンポーネント間の関係を次のように設定します
<code class="language-php"><?php
$model = new Model();
$controller = new Controller($model);
$view = new View($controller, $model);
if (isset($_GET['action']) && !empty($_GET['action'])) {
$controller->{$_GET['action']}();
}
echo $view->output();</code>
結論PHPのMVCモードの重要性は何ですか?
MVCモードはPHPでどのように機能しますか?
PHPプロジェクトでMVCモードを実装する方法は?
PHPプロジェクトでMVCモードの実装には、モデル、ビュー、コントローラーの個別のファイルまたはクラスを作成することが含まれます。モデルには、データにアクセスして操作するための関数が含まれ、ビューにはデータを表示するためのHTMLとPHPコードが含まれ、コントローラーにはユーザー入力および更新モデルとビューを処理するための機能が含まれます。
プロジェクトにMVCパターンを実装するのに役立つ人気のあるPHP MVCフレームワークがいくつかあります。これらには、Laravel、Symfony、Codeigniter、CakePhpが含まれます。これらのフレームワークは、MVCパターンを使用してWebアプリケーションを構築するための構造化された効率的な方法を提供します。
PHP MVCフレームワークを使用すると、多くの利点があります。コードを整理するための構造化された方法を提供し、維持と拡張を容易にします。また、一般的なタスクに組み込まれた関数とライブラリを提供し、記述する必要があるコードの量を減らします。さらに、MVCフレームワークには、一般的なWebの脆弱性からアプリケーションを保護するセキュリティ機能が含まれることがよくあります。
PHP MVCでは、コントローラーはモデルとビューの間の仲介者として機能します。ユーザーがリクエストを行うと、コントローラーはリクエストを解釈し、対応するモデル関数を呼び出してデータを処理します。次に、データの変更を反映するためにビューを更新します。
PHP MVCでは、ユーザー入力は通常、コントローラーによって処理されます。コントローラーはユーザー入力を受信し、検証し、処理のためにモデルに渡します。次に、モデルはデータを更新し、コントローラーに通知し、ビューを更新します。
PHP MVCのモデルでデータを更新する方法は? PHP MVCアプリケーションが安全であることを確認する方法は?
以上がPHPマスター| MVCパターンとPHP、パート1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。