CodeIgniter MVC (モデル ビュー コントローラー) フレームワークと例

MVCとは何ですか?

Model-View-Control の MVC 標準。それは archiアプリケーションを 3 つの主要なコンポーネントに分割する構造パターン。

1. モデルはビジネス ロジックとデータベースの相互作用を扱います

2. コントローラーはモデルとビュー間のアクティビティを調整します。

3. View はデータのプレゼンテーションを担当します

次のことwing MVC の利点の一部は次のとおりです archi構造パターン

  • 疎結合 - コンポーネントは互いに独立して存在し、機能します。
  • 柔軟性 – 個々のコンポーネントを簡単に変更できます
  • 生産性の向上 – 複数の人が同時にプロジェクトに取り組むことができます。 フロントエンド開発者はビューとプレゼンテーションに取り組むことができ、バックエンド開発者はモデルに集中できます。システムは疎結合であるため、一日の終わりに機能します。

モデル

モデルはデータ ソースとの対話を担当します。 これは通常データベースですが、要求されたデータを提供するサービスである場合もあります。 ビジネス ロジックをコントローラーではなくモデルに含めるのも一般的です。 この手法は通常、ファット モデル スキニー コントローラーと呼ばれます。

通常、モデルはデータベースにデータを書き込み、データの編集、更​​新、削除のメカニズムを提供します。 最新の Web アプリケーションでは、モデルはアクティブ レコードなどのデータ アクセス設計パターンを使用して、データベースとの対話を容易にします。

たとえば、CodeIgniter はモデルを支援するために組み込みライブラリ Active Record を使用しますが、Laravel などの他のフレームワークはデータ アクセスを支援する Eloquent Object Relational Mapper (ORM) を使用します。

コントローラー

コントローラーは、ユーザーからのリソースに対する受信リクエストをリッスンします。 これはモデルとビューの間の仲介者として機能し、場合によってはいくつかのビジネス ルールも実装します。 コントローラーがデータベースにユーザーを登録するリクエストを受信したとします。

コントローラーは、送信されたものに対してデータ検証を実行して、必要なパラメーターがすべて送信されていることを確認する場合があります。 何かが不足している場合、ユーザーは登録ページにリダイレクトされ、適切なエラー メッセージが表示されます。 コントローラーは、送信された電子メールがmail アドレスはすでに存在します。 すべての検証ルールが合格した場合、コントローラーはプロセスのためにデータをモデルに送信し、応答を待ちます。

モデルが情報を処理して肯定的な応答を返すと、コントローラーは適切なビューをロードし、モデルから返されたデータをパラメーターとして渡します。

View

このビューは、エンド ユーザーに提示されるデータを処理します。 Web アプリケーションでは、ビューには HTML、CSS が含まれることが多く、オプションで JavaScriptを。 ビューには最小限のプログラミング コードが含まれています。 ビューに含まれるコードは通常、データをクリーンアップしたり、レコードを編集するためのリンクを作成したりするために、モデルまたはヘルパー関数からパラメーターとして受け取ったデータのコレクションをループするために使用されます。 最新の Web アプリケーションのほとんどは、通常、疑似コードに近く、デザイナーが容易に理解できる独自の構文を定義するテンプレート エンジンを使用します。 CodeIgniter を使用する場合、短い PHP タグと制御構造を使用するのが一般的です。 CodeIgniter で何かを表示するには、次のコマンドを使用します。wing コード

<?=$title?>

とは対照的に

<?php
echo $title;
?>

制御構造は通常次のように記述されます

<?php foreach ($customers as $customer): ?>
<li>
<p><?=$customer->first_name?><p>
</li>
<?php endforeach; ?>

上の例からわかるように、ビューでは次の組み合わせが使用されます。 PHP すべてを純粋な PHP コードで囲むのではなく、HTML を使用します。

MVC フレームワークはどのように機能するのでしょうか?

次のことwing 画像は MVC フレームワークの動作を示しています

MVC フレームワークの動作

コントローラーはユーザーからのリクエストを受け取り、必要に応じてデータベース モデルと対話し、その結果を HTML コードの形式でブラウザーに返します。ブラウザーはこのコードを人間が読める形式に解釈してユーザーに表示します。

CodeIgniterコントローラー

上記の URL を Web ブラウザにロードしたときに何が起こったのかを詳しく見てみましょう。

アプリケーション/コントローラーにある Welcome.php コントローラー ファイルを開きます

以下が表示されるはずですwing コード

<?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 を作成します

以下を追加wing コード

<?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

コードを次のものに置き換えますwing

<!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>

変更を保存します

以下をロードしますwing WebブラウザのURL

http://localhost:3000/

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

CodeIgniter モデル

まとめ

  • MVC あります archiアプリケーションを 3 つの主要コンポーネントに分割する構造パターン
  • モデルはデータ ソースとの対話を担当します。
  • コントローラーは、ユーザーからのリソースに対する受信リクエストをリッスンします。
  • Web アプリケーションでは、ビューには HTML、CSS、およびオプションで JavaScript が含まれることがよくあります。
  • コントローラーはユーザーからのリクエストを受け取り、必要に応じてデータベース モデルと対話し、結果を HTML コードの形式でブラウザに返します。