序章
CodeIgniter は、Webアプリケーションの開発を大幅にスピードアップするのに役立つ強力なPHPフレームワークです。 ライブラリをロードするためのモジュラーアプローチによりパフォーマンスフットプリントが小さく、Model-View-Controller(MVC)ダイナミックを使用してロジックをプレゼンテーションから分離するのに最適です。
このチュートリアルでは、データベースのコンテンツを表示する非常に単純なアプリケーションを作成する方法を学習します。 これは、独自のCMSを構築するためのソリューションを提供することを目的としたものではなく、CodeIgniterの使用方法を説明することを目的としています。 さらに、前の記事で学んだ教訓のいくつかを実践しようとし、開発環境にCodeIgniterが既にインストールされており、最初のチュートリアルで説明されているように構成されていることを前提としています。 。
計画
この記事では、CodeIgniterのクラスと関数のいくつかを使用して、ニュースアイテムを含むデータベーステーブルをクエリし、それらをページに個別に表示する方法を説明します。 このために、コントローラー、モデル、ビュー、および情報を保持するデータベースを作成します(ただし、MySQLスキルをブラッシュアップできるリソースが多数あるため、後者の部分も想定されます)。
データベースの要件は次のとおりです。id(プライマリおよび自動インクリメント)、タイトル、および本文の3つの列を含むニュースと呼ばれるテーブル。 もちろん、さらに追加することもできますが、例としてはこれで十分です。 次に、ダミーのニュース項目を含む行をテーブルにいくつか作成します。 このすばらしいチュートリアルを使用すると、方法がわからない場合にデータベースを作成するのに役立ちます。 さらに、このデータベースを使用するようにCodeIgniterを構成したことを確認してください。
モデル
データベースが適切に設定され、CodeIgniterがそれを認識したので、次に、データベースに情報を照会するModelクラスを作成します。 CodeIgniterインストールのapplication/ models フォルダーに移動し、 news_model.php という名前の新しいphpファイルを作成します(ファイルには任意の名前を付けることができます)。 ファイルの先頭にphpオープニングタグを追加し、デフォルトのCIを拡張してModelクラスを作成します(クラス名は大文字で始まることに注意してください)。
class News_model extends CI_Model { }
次に、このクラス内で、データベースをクエリするための関数(メソッドと呼ばれる)を作成する必要があります。 CodeIgniterは、データベースの操作を非常に簡単にするActiveRecordパターンを使用します。 コンストラクター関数にデータベースクラスをロードするだけです( application /configフォルダーの下のautoload.phpファイルにデータベースクラスをまだ自動ロードしていない場合)。行ってもいい。 これをロードするには、次の関数をクラスに貼り付けます。
public function __construct() { $this->load->database(); }
これにより、このクラス内のすべてのメソッドがデータベース関数を利用できるようになります。 次に、データベーステーブルから情報を読み取るには、Modelクラスに上記のメソッドが必要です。
public function get_news($id) { if($id != FALSE) { $query = $this->db->get_where('news', array('id' => $id)); return $query->row_array(); } else { return FALSE; } }
news テーブルからIDが渡された行を取得し、テーブル内のすべての列を含む連想配列として返す前に、IDが渡されたことを確認するだけです。 IDが渡されない場合、関数はFALSEを返します。
これで情報の取得が処理されます。 次に、この情報を要求するクライアントからの要求を処理します。 ファイルを保存して終了します。
コントローラー
application / controllers フォルダーに移動し、 news.php という名前の新しいphpファイルを作成します(このファイルの名前は、指定するクラスの名前と一致している必要があります)。 ファイル内で、phpタグを開き、拡張子でControllerクラスを作成することからやり直します。
class News extends CI_Controller { }
次に、このクラス内でリクエストを処理し、関連するニュースを表示します。 Modelクラスではすべての手間のかかる作業が発生するため、ここで行う必要があるのは、それをロードして、表示したいニュースのID引数に渡すことだけです。 それでは、これを処理する show()という関数を作成しましょう。
public function show($id) { $this->load->model('news_model'); $news = $this->news_model->get_news($id); $data['title'] = $news['title']; $data['body'] = $news['body']; $this->load->view('news_article', $data); }
このメソッドの機能は次のとおりです。最初の行は、作成したnews_modelをロードします。 2つ目はそれを使用し、クエリ結果(行のすべての列を含む連想配列)を $news変数に格納します。 3行目と4行目は、取得したニュースのタイトルと本文を $ data 配列に格納し、5行目はそれらを表示するために使用するビューをロードして情報を渡します。 $ data 配列の各キーは、ビューファイルに出力される変数を表します。 それでは、それをどのように構築するかを見てみましょう。
景色
application / views フォルダーに移動し、 news_article.php という名前のphpファイルを作成します(これは、コントローラーにロードしたものと同じ名前である必要があります。 そこにロードするときにphp拡張機能を含める必要がないことに注意してください。) このファイルで、次の行をコピーします。
<?php print $title; ?><?php print $body; ?>
ご覧のとおり、 $title変数と$body 変数は、 $data配列を介してコントローラーからビューに渡されています。 あらゆる種類のマークアップを追加して、任意の方法でページを表示できますが、私たちの目的では、タイトルのH1タグと本文の段落で十分です。 ファイルを保存し、作成したコントローラーにブラウザーを向けます。
http://example.com/news/show/1
ブラウザがこのリクエストを行うと、CodeIgniterは news という名前のコントローラーを探し( news.php という名前のphpクラスファイル内)、showという名前のメソッドを呼び出します。 ()、パラメーター1を渡します。 次に、このメソッドは、データベースにクエリを実行する news_model をロードし、ニュースの一部を返します。このニュースは、コントローラーがビューに渡して表示します。 非常にシンプルで論理的です。 http://example.com/news/show/2 にアクセスすると、IDが2のニュースが表示されます。
そして、ここにそれがあります。データベースに情報を照会し、それをクライアントに表示する、基本的で動的なアプリケーションです。 今、あなたは尋ねるかもしれません、なぜこれのために3つのファイルとこれらすべての機能と構成を使うのですか? 関数型プログラミングの管理が困難になる複雑なアプリケーションを構築し、CodeIgniterのようなフレームワークを使用しないと、これらすべてのライブラリを自分で定義する必要がある場合、これに対する答えは明白です。