CodeIgniter MVC(モデルビューコントローラー)フレームワークとサンプル
MVCとは何ですか?
モデル・ビュー・コントロールの MVC 標準。アプリケーションを 3 つの主要コンポーネントに分割するアーキテクチャ パターンです。
1. モデルはビジネス ロジックとデータベースの相互作用を扱います
2. コントローラーはモデルとビュー間のアクティビティを調整します。
3. View はデータのプレゼンテーションを担当します
MVCアーキテクチャパターンの利点のいくつかを以下に示します。
- 疎結合 - コンポーネントは互いに独立して存在し、機能します。
- 柔軟性 – 個々のコンポーネントを簡単に変更できます
- 生産性の向上 – 複数の人が同時にプロジェクトに取り組むことができます。 フロントエンド開発者はビューとプレゼンテーションに取り組むことができ、バックエンド開発者はモデルに集中できます。システムは疎結合であるため、一日の終わりに機能します。
モデル
モデルはデータ ソースとの対話を担当します。 これは通常データベースですが、要求されたデータを提供するサービスである場合もあります。 ビジネス ロジックをコントローラーではなくモデルに含めるのも一般的です。 この手法は通常、ファット モデル スキニー コントローラーと呼ばれます。
通常、モデルはデータベースにデータを書き込み、データの編集、更新、削除のメカニズムを提供します。 最新の Web アプリケーションでは、モデルはアクティブ レコードなどのデータ アクセス設計パターンを使用して、データベースとの対話を容易にします。
たとえば、 CodeIgniterは、モデルを支援するために組み込みライブラリであるActive Recordを使用しますが、Laravelなどの他のフレームワークは、データアクセスを支援するEloquentオブジェクトリレーショナルマッパー(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 コードの形式でブラウザーに返します。ブラウザーはそれを人間が読める形式に解釈し、ユーザーに表示します。
Codeイグナイターコントローラー
それでは、上記のデータを読み込んだ際に何が起こったのかを詳しく見ていきましょう。 URL ウェブブラウザに入力してください。
アプリケーション/コントローラーにある 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 変数をビューに渡します。
Code点火装置モデル
上記のコードで参照したビューを作成しましょう。 簡単にするために、私たちのモデルは データベース ただし、静的な顧客レコードが返されます。 次のチュートリアルではデータベースを扱います。
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 Webブラウザで
http://localhost:3000/
以下の画像に示すように、顧客カードが表示されるはずです。
製品概要
- MVC アプリケーションを3つの主要コンポーネントに分割するアーキテクチャパターンです。
- モデルはデータ ソースとの対話を担当します。
- コントローラーは、ユーザーからのリソースに対する受信リクエストをリッスンします。
- ウェブアプリケーションでは、ビューにはHTML、CSS、オプションで Javaスクリプト
- コントローラーはユーザーからのリクエストを受け取り、必要に応じてデータベース モデルと対話し、結果を HTML コードの形式でブラウザに返します。


