PHP MVC フレームワーク チュートリアル: CodeIgniter の例

PHP MVC フレームワークとは何ですか?

PHP MVC は、アプリケーション データとビジネス ロジック (モデル) をプレゼンテーション (ビュー) から分離するアプリケーション設計パターンです。 MVC はモデル、ビュー、コントローラーの略です。

コントローラーはモデルとビューの間を仲介します。

MVC 設計パターンを車とドライバーとして考えてみましょう。

車にはフロントガラス (ビュー) があり、ドライバー (コントローラー) はこれを使用して前方の交通を監視し、前方に見えるものに応じて速度やブレーキ (モデル) を制御します。

PHP MVC フレームワークを使用する理由

  • PHP MVC フレームワークは、次のような方法で複雑なテクノロジーでの作業を簡素化します。
    • 複雑な実装の詳細をすべて隠す
    • アプリケーションの構築に使用できる標準メソッドを提供します。
    • 開発者の生産性が向上します。これは、データベースへの接続、ユーザー入力のサニタイズなどのアクティビティの基本実装がすでに部分的に実装されているためです。
    • 専門的なコーディング標準への準拠

PHP MVC デザインパターン

ここで、MVC デザイン パターンの各コンポーネントについて簡単に説明します。

モデル – この部分はビジネス ロジックとアプリケーション データに関係します。 データ検証の実行、データの処理、保存に使用できます。 データは次のものから取得できます。

  • フラットファイル
  • データベース
  • XML ドキュメント
  • その他の有効なデータ ソース。

コントローラー – これは、サーバーからのリソースに対するユーザーの要求を処理する部分です。

例として、ユーザーが URL をリクエストした場合、 …/index.php?products=list、コントローラーは製品モデルをロードして製品データを取得し、結果をリスト ビューに出力します。

簡単に言うと、コントローラーは、要求されたリソースに応じてモデルとビューをリンクします。

ビュー – この部分は、ユーザーへのデータの提示を扱います。 これは通常、HTML ページの形式です。

PHP MVC フレームワークの種類

最適な PHP フレームワークを選択するのは困難です。

MVC の利点を活用するために独自のフレームワークを作成する必要はありません。

MVC フレームワークがどのように機能するかを理解するために、独自の MVC 関連アプリケーション設計の作成のみを試みてください。

MVC フレームワークの動作方法に慣れたら、成熟したテスト済みのフレームワークに進む必要があります。

以下の表は、人気のある php フレームワークの一部と、各フレームワークが提供する機能を簡単に説明しています。

フレームワーク 詳細説明

CodeIgniter


CodeIgniter


https://codeigniter.com/

これは、最も人気のある PHP MVC フレームワークの XNUMX つです。 軽量で、習得までの時間が短いです。 Web サイトやアプリケーションを迅速に構築するのに役立つライブラリが豊富に揃っています。 OOP プログラミングの知識が限られているユーザーも使用できます。 CodeIgniter を利用したアプリケーションには次のものがあります。


コハナ


コハナ


http://kohanaframework.org

これは、階層型モデル ビュー コントローラー HMVC の安全で軽量なフレームワークです。アプリケーションを迅速に開発するための豊富なコンポーネント セットを備えています。Kohana を使用している企業には、次のものがあります。


CakePHP


CakePHP


www.cakephp.org

これは Ruby on Rails をモデルにしています。ソフトウェア設計パターン、設定より規約、ActiveRecord などの概念で知られています。 CakePHP パワードアプリケーションには以下が含まれます。


ゼンド

www.framework.zend.com


ゼンド

これは強力なフレームワークです。

  • 安全、信頼性、高速、スケーラブル
  • Web 2.0 と Web サービスの作成をサポートします。

次のようなベンダーの API を備えています。 Amazonグーグル Flickr、Yahoo などのビジネス アプリケーションの開発に最適です。 Zend を利用したアプリケーションには次のものがあります。

  • ピムコアCMS、
  • ドットカーネル。

Zend フレームワークを使用している企業には次のようなものがあります。

  • BBC
  • Cisco
  • Webex
  • Offerings.com

世論調査アプリケーションを CodeIgniter に移植する

この中の チュートリアル, PHP 投票アプリケーションを作成しました。 ここでは、そのコードを CodeIgniter に移植します。

  • ダウンロード CodeIgniter の最新バージョン ウェブサイトをご覧ください。
  • zip ファイルの内容を Web サーバー ディレクトリの開発ディレクトリに抽出します。 このレッスンではフォルダー名として ciopinionpoll を使用します。
  • URL を参照してください http://localhost/ciopinionpoll/

世論調査アプリケーションを CodeIgniter に移植する

これから、世論調査アプリケーションを CodeIgniter に移植します。 私たちのアプリケーションが XNUMX つの主要なコンポーネントに分割されていることを思い出してください。

  • フロント コントローラー – これは URL リクエストに応答し、リクエストされたページを返す部分です。 このコードはコントローラーに入ります
  • モデル – これは、要求されたデータに応答し、要求されたデータを返すコードです。 このコードはモデルに組み込まれます
  • ビュー – これは、データの書式設定と表示を担当するコードです。 このコードはビューに入ります

    • ciopinionpoll フォルダーを参照します
    • Video Cloud Studioで データベース.php ファイルは application/config ディレクトリにあります。
    • 次のコード行を見つけます

データベース構成設定

データベース構成設定

  • ユーザー名をrootに設定します
  • パスワードをローカルホストの root パスワードに設定します。
  • データベース名をopinion_pollにします。 前のレッスンで作成したデータベースを使用することに注意してください。
  • 変更を保存してファイルを閉じます。

モデルの作成

次に、CI_Model を拡張するモデルを作成します。 CI_Model は CodeIgniter ライブラリの一部です。 モデルは application/models にあります 意見投票_モデル.php

<?php 
class Opinion_poll_model extends CI_Model 
{ 
    public function __construct() 
    { 
    	$this->load->database(); 
    } 

    public function total_votes() 
    { 
    	$query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries');
        return $query->row()->choices_count; 
    } 

    public function get_results() 
    { 
    	$libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); 
        $table_rows = ''; 

        for ($i = 1; $i < 5; $i++) 
        {
             $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; 
             $result = $model->

             select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; 
        } 
        public function add_vote($choice) 
        { 
        	$ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data); 
        } 
   } 
?>

ここに、

  • 「class Opinion_poll_model extends CI_Model…」は、CI_Model を拡張するモデルです。
  • 「…親:: __construct();」 CI_Model コンストラクターを呼び出します
  • 「$this->load->database();」 アプリケーションがデータベースと対話できるようにデータベース ライブラリをロードします。
  • 「$this->db->」は CodeIgniter のアクティブなレコードです。 これをチェックして アクティブなレコードの詳細については、

コントローラーの作成 では、コントローラーを作成しましょう。 application/controllers/welcome.php にあるデフォルトの CodeIgniter コントローラーを使用します。そのソース コードを次のコードに置き換えます。

<?php

if (!defined('BASEPATH'))  exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function __construct() {

        parent::__construct();

        $this->load->model('opinion_poll_model');

    }

    public function index() {

        if ($this->input->post('submitbutton') && !$this->input->post('vote')) {

            echo "<script>alert('You did not vote!');</script>";

        }

        if ($this->input->post('vote')) {

            $this->opinion_poll_model->add_vote($this->input->post('vote'));

            $data['total_votes'] = $this->opinion_poll_model->total_votes();

            $data['rows'] = $this->opinion_poll_model->get_results();

            $this->load->view('results', $data);

        } else {

            $this->load->view('opinion_poll_form');

        }

    }

}

/* End of file welcome.php */

/* Location: ./application/controllers/welcome.php */
?>

ここに、

  • 「if (!define('BASEPATH')) exit('直接スクリプト アクセスは許可されません');」 ユーザーがコントローラー クラスに直接アクセスしないようにします。
  • 「class Welcome extends CI_Controller…」コントローラーは CI_Controller クラスを拡張します
  • 「パブリック関数 __construct()」は、CI_Controller のクラス コンストラクター メソッドを呼び出し、Opinion_poll_model モデルをロードします。
  • 「public functionindex()…」はindex.phpにマッピングされる関数です。 CodeIgniter の入力クラスを使用して、投票が送信されたかどうかを確認し、投票をデータベースに追加して、結果を表示します。 入力クラスの post 配列が空の場合、投票ページがロードされます。
  • 「$this->input->post('…')」は、$_POST グローバル変数の内容を取得する CodeIgniter 入力クラスです。
  • 「$this->opinion_poll_model->add_vote($this->input->post('vote'))」は、モデルの add_vote メソッドを呼び出して、データベースに投票を追加します。

私たちの見解を作成する

前の例では、投票用と結果用の2つのHTMLページがあったことを思い出してください。同じHTMLコードを最小限の修正で使用してビューを作成します。application/viewsディレクトリに次のファイルを作成します。

opinion_poll_form.php 
<html>
<head>
    <title>
        JavaScript Libraries - Opinion Poll
    </title>
</head>

<body>
    <h2>JavaScript Libraries - Opinion Poll</h2>
    <p><b>What is your favorite JavaScript Library?</b></p>
    <form method="POST" action="index.php">
        <p>
            <input type="radio" name="vote" value="1" /> JQuery
            <br />
            <input type="radio" name="vote" value="2" /> MooTools
            <br />
            <input type="radio" name="vote" value="3" /> YUI Library
            <br />
            <input type="radio" name="vote" value="4" /> Glow </p>
        <p>
            <input type="submit" name="submitbutton" value="OK" />
        </p>
    </form>
</body>
</html>

次に、結果ページ results.php を作成しましょう。

<html>
    <head>
        <title>JavaScript Libraries - Opinion Poll Results</title>
    </head>
    <body>

        <h2>JavaScript Libraries - Opinion Poll Results</h2>

        <p><b>What is your favorite JavaScript Library?</b></p>

        <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p>

        <p><table><tr><td>

            <?php print($rows); ?>

        </tr></td></table></p>

        <p><a href="#">Return to voting page</a></p>
</body>
</html>

アプリケーションをテストする

アプリケーションのルート ディレクトリが ciopinion であると仮定して、次の場所を参照します。 http://localhost/ciopionpoll/

PHP MVC フレームワークのテスト

OKボタンをクリックすると、次の警告メッセージが表示されます。

PHP MVC フレームワークのテスト

好きな候補者に投票し、「OK」をクリックすると、次の結果ページが表示されます。

PHP MVC フレームワークのテスト

結論

CodeIgniter は、学習と使用が簡単な PHP MVC フレームワークであり、アプリケーションの開発にかかる時間を大幅に削減できます。
CodeIgniter は、学習と使用が簡単な PHP MVC フレームワークであり、アプリケーションの開発にかかる時間を大幅に削減できます。

製品概要

  • フレームワークは、一般的なタスクの部分的な実装を提供するライブラリのセットです。
  • PHP には、オープンソースで成熟し、テスト済みの MVC フレームワークが多数あります。
  • 優れた開発アプローチでは、データをプレゼンテーションから分離し、アプリケーションへの単一のエントリ ポイントの使用を奨励します。
  • アプリケーション設計のベスト プラクティスに従った従来の PHP アプリケーションは、最小限の変更で MVC フレームワークに移植できます。