コンテンツ
メンバーのページ

基本的な使い方

フレームワークのダウンロード

まず最初に、なんと言ってもフレームワークを手に入れてもらわなければなりません。 早速ダウンロードのページからフレームワークをダウンロードしてください。 フレームワークの本体は1つのPHPファイルのみです。 また、その他にApache用の設定ファイル(.htaccess)が同梱されています。 このファイルを使うことで作業をさらに省力化できます。

ディレクトリの作成

Issun-MVCフレームワークでは、基本的に一つのリクエストに対して、2つのファイルを呼び出します。 MVCモデルのModelにあたるアクションファイルと、Viewにあたるビューファイルです。 アクションファイルやビューファイルは決まったディレクトリに置く必要があるため、 これらのディレクトリを作成する必要があります。 フレームワーク本体を置くディレクトリの中に、「action」と「view」という2つのディレクトリを作成してください。

基本的なディレクトリ構成は次のようになります。

/ … フレームワークを置くディレクトリ
+ action/ … アクションファイル格納用ディレクトリ
+ view/ … ビューファイルディレクトリ格納用ディレクトリ
+ dispatcher.php … フレームワーク本体
+ .htaccess … Apache用設定ファイル

アクションファイルの作成

閲覧者がブラウザからアクセスしてきた際、フレームワークは 呼び出されたURLに対応したアクションファイルを呼び出します。 アクションファイルはビジネスロジックと呼ばれる、 システムで実行する処理を記述します。 ここには表示するHTMLは記述しないようにしてください。 表示する内容は後述のビューファイルに記述するようにします。

このアクションファイルはactionディレクトリの中に作成します。 アクションファイルの名前は、リクエストのURLに対応します。 たとえば「http://DOMAIN/aaa/bbb.html」というリクエストの場合、 aaa.phpというアクションファイルが呼び出されます。 また、アクションファイルでは必ずActionという名前のクラスを定義する必要があります。 先述URLで呼び出された場合は、このActionクラスの中にあるbbbというメソッドが呼び出されることになります。

PHPではリクエストパラメータは$_REQUEST等で取得しますが、 Issun-MVCでは自動的にクラスのフィールドにパラメータの値が代入されます。 パラメータ名がそのままフィールド名となります。 たとえばvalueというパラメータ名で渡された値は、 Actionクラスのvalueというフィールドに格納されます。

例えば、「http://DOMAIN/aaa/bbb.html」 というリクエストで呼び出されるアクションファイル(aaa.php)は次のようになります。

class Action {
	var $value; // $_REQUEST["value"]の値が格納されます
	function bbb() {
		// ここにロジックを記述します
		return "ccc";
	}
}

ビューファイルの作成

アクションファイルの中のメソッドの戻り値によって、 ビューファイルが呼び出されます。 このビューファイルは、アクションファイルのメソッドで処理した結果を含めたHTMLを記述するためのものです。

このビューファイルはviewディレクトリの中に作成します。 ビューファイルの名前は「(アクションファイルの名前から拡張子を除いたもの)-(メソッドの戻り値).php」 もしくは「(メソッドの戻り値).php」としてください。 アクションファイルがaaa.php、メソッドの戻り値がcccの場合、 ビューファイルは「aaa-ccc.php」もしくは「ccc.php」となります。 両方のファイルが存在した場合は、 アクションファイルがついているもの(aaa-ccc.php)が呼び出されます。 ビューファイルではクラスを定義する必要はありません。

リクエスト転送ファイルの作成

通常はそのままで「http://DOMAIN/aaa/bbb.html」というリクエストが来たら、 aaa.phpというアクションファイルのbbbというメソッドが呼び出されます。 これは、.htaccessの中でApacheのmod_rewriteというモジュールを使ってリクエストを転送しているからです。 .htaccessによる転送が可能な場合のディレクトリ構成は次のようになります。

/ … フレームワークを置くディレクトリ
+ action/ … アクションファイル格納用ディレクトリ
| + aaa.php … アクションファイル
+ view/ … ビューファイルディレクトリ格納用ディレクトリ
| + aaa-bbb.php … ビューファイル
+ dispatcher.php … フレームワーク本体
+ .htaccess … Apache用設定ファイル

WebサーバがApacheでない場合、Apacheであっても.htaccessが使えない場合、 またはmod_rewriteが使えない場合はリクエスト転送ファイルを作成する必要があります。 このリクエスト転送ファイルとは、リクエストを受け取ってフレームワークを呼び出すというものです。 先述の、/aaa/bbb.htmlというリクエストに対するリクエスト転送ファイルを追加したディレクトリ構成は次のようになります。

/ … フレームワークを置くディレクトリ
+ aaa/
| + bbb.php … リクエスト転送ファイル
+ action/ … アクションファイル格納用ディレクトリ
| + aaa.php … アクションファイル
+ view/ … ビューファイルディレクトリ格納用ディレクトリ
| + aaa-bbb.php … ビューファイル
+ dispatcher.php … フレームワーク本体

上述のリクエスト転送ファイル(bbb.php)の中身は次のようになります。

<?php
require_once("../dispatcher.php");
?>

.htaccessで転送できない場合は、 上記のようなリクエスト転送ファイルを全てのリクエストに対して作成してください。

フィルタファイルの作成(オプション)

Issun-MVCフレームワークでは、必要に応じてフィルタ機能が利用できます。 フィルタ機能は、アクションファイルのメソッドが呼び出される前、 ビューファイルが呼び出される前、およびビューファイルが呼び出された後に、 決まった処理を呼び出したいときに使用します。 例えば、データベースアクセスで必ずコネクションを切断しなければならない場合などです。

フィルタ機能を利用するには、アクションファイル格納用ディレクトリ(action/)の中に、 「_filter.php」というファイルを作成してください。 そして、そのファイルに「filter_begin」、「filter_before_view」、「filter_end」という関数を作成します。 filter_begin関数はアクションファイルのメソッドが呼び出される前、 filter_before_view関数はビューファイルが呼び出される前、 filter_end関数はビューファイルが呼び出された後に呼び出されます。

フィルタファイル(_filter.php)は次のようになります。

<?php
function filter_begin() {
	// アクションファイルのメソッド呼び出し前に実行される処理
}

function filter_before_view() {
	// ビューファイル呼び出し前に実行される処理
}

function filter_end() {
	// ビューファイル呼出し後に実行される処理
}
?>

テンプレートファイルの作成(オプション)

Issun-MVCフレームワークでは、必要に応じてテンプレート機能が利用できます。 テンプレート機能は、Issun-MVCフレームワークを使って表示される全てのページで、 ある決まったHTMLを表示したいときに使用します。 例えば、全てのページに同じヘッダとフッタを付加したい場合などです。

テンプレート機能を利用するには、ビューファイル格納用ディレクトリ(view/)の中に、 「_template.php」というファイルを作成してください。 このファイルがある場合は、ビューファイルを呼び出す代わりに、 このテンプレートファイルが呼び出されるようになります。 本来のビューファイルは、このテンプレートファイルから呼び出すことになります。 本来のビューファイルのファイル名は「$GLOBALS["_VIEW"]」という変数に格納されていますので、 テンプレートファイルの中で呼び出してください。

例えば、全てのページに同じタイトルを表示するためのテンプレートファイル(_template.php)は次のようになります。

<html>
	<head>
		<title>全てのページで表示されるタイトル</title>
	</head>
	<body>
		<?php include($GLOBALS["_VIEW"]); ?>
	</body>
</html>

最後に

駆け足での説明でしたが、いかがでしょうか? 分からないところがあればサンプルを参考にしてください。 もちろん、オープンソースですのでソースを解析するのもいいかもしれません。