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

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

PHP MVCは、アプリケーションデータとビジネスロジック(モデル)をプレゼンテーション(ビュー)から分離するアプリケーションデザインパターンです。 MVCは、Model、View&Controllerの略です。

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

MVCデザインパターンを車とドライバーと考えてください。

車にはフロントガラス(ビュー)があり、ドライバー(コントローラー)が前方の交通を監視し、前方の状況に応じて速度またはブレーキ(モデル)を監視します。

なぜPHPMVCフレームワークを使用するのですか?

  • PHP MVCフレームワークは、次の方法で複雑なテクノロジーの操作を簡素化します。
    • 複雑な実装の詳細をすべて非表示にする
    • アプリケーションの構築に使用できる標準的な方法を提供します。
    • これは、データベースへの接続、ユーザー入力のサニタイズなどのアクティビティの基本実装がすでに部分的に実装されているためです。
    • 専門的なコーディング標準の順守

このチュートリアルでは、次のことを学びます-

PHPMVCデザインパターン

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

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

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

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

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

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

ビュー –このパートでは、ユーザーへのデータの提示について説明します。 これは通常、HTMLページの形式です。

PHPMVCフレームワークの種類

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

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

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

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

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

フレームワーク 説明

CodeIgniter
https://codeigniter.com/
これは、最も人気のあるPHPMVCフレームワークの1つです。 軽量で、学習曲線が短いです。 Webサイトやアプリケーションを迅速に構築するのに役立つ豊富なライブラリセットがあります。 OOPプログラミングの知識が限られているユーザーも使用できます。 CodeIgniterを利用したアプリケーションには以下が含まれます。

コハナ
http://kohanaframework.org
これは、階層モデルビューコントローラーHMVCの安全で軽量なフレームワークです。 アプリケーションを迅速に開発するための豊富なコンポーネントセットがあります。 コハナを使用する会社は次のとおりです。

CakePHP
www.cakephp.org
Ruby onRailsをモデルにしています。 ソフトウェアデザインパターン、設定より規約、ActiveRecordなどの概念で知られています。CakePHPを利用したアプリケーションには次のものがあります。

www.framework.zend.com
ゼンド
これは強力なフレームワークです。

  • 安全、信頼性、高速、スケーラブル
  • Web2.0およびWebサービスの作成をサポートします。

Amazon、Google、Flickr、YahooなどのベンダーのAPIを備えています。ビジネスアプリケーションの開発に最適です。 Zendを利用したアプリケーションには次のものがあります。 Zendフレームワークを使用している企業は次のとおりです。

  • BBC
  • シスコ
  • Webex
  • Offerings.com

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

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

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

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

  • フロントコントローラー–これは、URL要求に応答し、要求されたページを返す部分です。 このコードはコントローラーに入ります
  • モデル–これは、要求されたデータに応答し、要求されたデータを返すコードです。 このコードはモデルに入ります
  • ビュー–これはデータのフォーマットと表示を担当するコードです。 このコードはビューに入ります
    • ciopinionpollフォルダーを参照します
    • を開きます database.php application / configディレクトリにあるファイル。
    • 次のコード行を見つけます

データベース構成設定

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

モデルの作成

次に、CI_Modelを拡張するモデルを作成します。 CI_ModelはCodeIgniterライブラリの一部です。 モデルはアプリケーション/モデルに配置されます 世論調査モデル.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); 
        } 
   } 
?>

ここに、

コントローラの作成次に、コントローラを作成しましょう。 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(!defined( ‘BASEPATH’))exit( ‘スクリプトへの直接アクセスは許可されていません’);」 ユーザーがコントローラークラスに直接アクセスしないようにします
  • 「classWelcomeextendsCI_Controller…」私たちのコントローラーはCI_Controllerクラスを拡張します
  • 「publicfunction__construct()」は、CI_Controllerのクラスcontructorメソッドを呼び出し、Opinion_poll_modelモデルをロードします。
  • 「publicfunctionindex()…」は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 /

[OK]ボタンをクリックすると、次のアラートメッセージが表示されます

お気に入りの候補者に投票し、[OK]をクリックします。次の結果ページが表示されます。

結論

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

概要

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

Hope this helps!

Source link