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フレームワークの動作を示しています

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/

以下の画像に示すように、顧客カードが表示されるはずです。

CodeIgniter モデル

製品概要

  • MVC アプリケーションを3つの主要コンポーネントに分割するアーキテクチャパターンです。
  • モデルはデータ ソースとの対話を担当します。
  • コントローラーは、ユーザーからのリソースに対する受信リクエストをリッスンします。
  • ウェブアプリケーションでは、ビューにはHTML、CSS、オプションで Javaスクリプト
  • コントローラーはユーザーからのリクエストを受け取り、必要に応じてデータベース モデルと対話し、結果を HTML コードの形式でブラウザに返します。