CodeIgniter MVC (モデル ビュー コントローラー) フレームワークと例
MVCとは何ですか?
モデル・ビュー・コントロールの MVC 標準。アプリケーションを 3 つの主要コンポーネントに分割するアーキテクチャ パターンです。
1. モデルはビジネス ロジックとデータベースの相互作用を扱います
2. コントローラーはモデルとビュー間のアクティビティを調整します。
3. View はデータのプレゼンテーションを担当します
MVCアーキテクチャパターンの利点のいくつかを以下に示します。
- 疎結合 - コンポーネントは互いに独立して存在し、機能します。
- 柔軟性 – 個々のコンポーネントを簡単に変更できます
- 生産性の向上 – 複数の人が同時にプロジェクトに取り組むことができます。 フロントエンド開発者はビューとプレゼンテーションに取り組むことができ、バックエンド開発者はモデルに集中できます。システムは疎結合であるため、一日の終わりに機能します。
モデル
モデルはデータ ソースとの対話を担当します。 これは通常データベースですが、要求されたデータを提供するサービスである場合もあります。 ビジネス ロジックをコントローラーではなくモデルに含めるのも一般的です。 この手法は通常、ファット モデル スキニー コントローラーと呼ばれます。
通常、モデルはデータベースにデータを書き込み、データの編集、更新、削除のメカニズムを提供します。 最新の Web アプリケーションでは、モデルはアクティブ レコードなどのデータ アクセス設計パターンを使用して、データベースとの対話を容易にします。
たとえば、CodeIgniter はモデルを支援するために組み込みライブラリ Active Record を使用しますが、Laravel などの他のフレームワークはデータ アクセスを支援する Eloquent Object Relational Mapper (ORM) を使用します。
コントローラー
コントローラーは、ユーザーからのリソースに対する受信リクエストをリッスンします。 これはモデルとビューの間の仲介者として機能し、場合によってはいくつかのビジネス ルールも実装します。 コントローラーがデータベースにユーザーを登録するリクエストを受信したとします。
コントローラーは、送信された内容に対してデータ検証を実行し、必要なパラメータがすべて送信されたことを確認します。不足しているものがある場合、ユーザーは登録ページにリダイレクトされ、適切なエラー メッセージが表示されます。コントローラーは、送信された電子メール アドレスがすでに存在するかどうかをチェックして、モデルにさらに検証を実行するように要求することもできます。すべての検証ルールに合格した場合、コントローラーはデータを処理のためにモデルに送信し、応答を待ちます。
モデルが情報を処理して肯定的な応答を返すと、コントローラーは適切なビューをロードし、モデルから返されたデータをパラメーターとして渡します。
表示
このビューは、エンド ユーザーに提示されるデータを処理します。 Web アプリケーションでは、ビューには HTML、CSS が含まれることが多く、オプションで Javaスクリプトビューには最小限のプログラミング コードが含まれています。ビューに含まれるコードは通常、モデルまたはヘルパー関数からパラメーターとして受け取ったデータのコレクションをループして、データをクリーンアップしたり、レコードを編集するためのリンクを作成したりするために使用されます。ほとんどの最新の Web アプリケーションでは、通常、擬似コードに似た独自の構文を定義し、デザイナーが簡単に理解できるテンプレート エンジンを使用しています。CodeIgniter を使用する場合、短い PHP タグと制御構造を使用するのが一般的です。CodeIgniter で何かを表示するには、次のコードを使用します。
<?=$title?>
とは対照的に
<?php echo $title; ?>
制御構造は通常次のように記述されます
<?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?><p> </li> <?php endforeach; ?>
上の例からわかるように、ビューでは次の組み合わせが使用されます。 PHP すべてを純粋な PHP コードで囲むのではなく、HTML を使用します。
MVC フレームワークはどのように機能するのでしょうか?
次の画像はMVCフレームワークの動作を示しています
コントローラーはユーザーからのリクエストを受け取り、必要に応じてデータベース モデルと対話し、結果を HTML コードの形式でブラウザーに返します。ブラウザーはそれを人間が読める形式に解釈し、ユーザーに表示します。
CodeIgniterコントローラー
上記の URL を Web ブラウザにロードしたときに何が起こったのかを詳しく見てみましょう。
アプリケーション/コントローラーにある Welcome.php コントローラー ファイルを開きます
次のコードが表示されるはずです
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
ここに、
- 定義済み('BASEPATH') OR exit('直接スクリプト アクセスは許可されません'); リクエストがindex.php経由でなかった場合、コントローラーへの直接アクセスを防ぎます。 これはセキュリティのためです。
- class Welcome extends CI_Controller {…} Welcome コントローラー クラスを定義し、親クラス CI_Controller を拡張します。
- public function Index(){…} は URL に応答するインデックス メソッドを定義します
http://localhost:3000
- $this->load->view('welcome_message'); application/views ディレクトリにあるビュー welcome_message をロードします
次のようにインデックス メソッドを更新します。
public function index() { $this->load->model('customers_model'); $data['customer'] = $this->customers_model->get_customer(3); $this->load->view('welcome_message',$data); }
ここに、
- $this->load->model('customers_model'); 顧客モデルをロードします。
- $data['customer'] = $this->customers_model->get_customer(3); Customers_model の get_customer メソッドを呼び出し、パラメータ 3 を渡します。この例では値をハードコーディングしていますが、実際のアプリケーションでは、これは URI からのパラメータになります。
- $this->load->view('welcome_message',$data); welcome_message ビューをロードし、$data 変数をビューに渡します。
CodeIgniter モデル
上記のコードで参照したビューを作成しましょう。 簡単にするために、私たちのモデルは データベース ただし、静的な顧客レコードが返されます。 次のチュートリアルではデータベースを扱います。
application/models にファイル Customers_model.php を作成します
次のコードを追加します
<?php class Customers_model extends CI_Model { public function get_customer($id) { $data['id'] = 3; $data['first_name'] = 'John'; $data['last_name'] = 'Doe'; $data['address'] = 'Kingstone'; return $data; } }
ここに、
- class Customers_model extends CI_Model {…} CI_Model を拡張するモデル Customers_model を定義します。
- public function get_customer($id) {…} 顧客 ID に基づいて get customer メソッドを定義します
- $data[…] は、架空の顧客の静的な値を定義します。 これはデータベースから返された行である必要があります。
- $data を返します。 顧客データを返します。
つまり、これは私たちのモデルの場合です。 それでは、welcome_message ビューを変更しましょう
次の場所にある welcome_message.php を開きます。
application/views/welcome_message.php
コードを次のコードに置き換えます
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>CodeIgniter MVC Basics</title> </head> <body> <h1>Customer Details Card</h1> <p>Customer ID : <strong><?=$customer['id']?></strong></p> <p>First Name : <strong><?=$customer['first_name']?></strong></p> <p>Last Name : <strong><?=$customer['last_name']?></strong></p> <p>Address : <strong><?=$customer['address']?></strong></p> </body> </html>
変更を保存します
ウェブブラウザで次のURLを読み込みます
http://localhost:3000/
以下の画像に示すように、顧客カードが表示されるはずです。
製品概要
- MVC アプリケーションを3つの主要コンポーネントに分割するアーキテクチャパターンです。
- モデルはデータ ソースとの対話を担当します。
- コントローラーは、ユーザーからのリソースに対する受信リクエストをリッスンします。
- ウェブアプリケーションでは、ビューにはHTML、CSS、オプションで Javaスクリプト
- コントローラーはユーザーからのリクエストを受け取り、必要に応じてデータベース モデルと対話し、結果を HTML コードの形式でブラウザに返します。