PHPで(M)VCフレームワーク自作

1月 8th, 2008 admin Posted in PHP | 1 Comment »

PHPを単にHTMLのフレームの代用としてレイアウトのためだけに使いたいときがある。

そんな時にはMVCフレームワークのMがないVCフレームワークがあれば便利だなと思った。
要するにCakePHPでいうpageコントローラーだけあるようなイメージ、アクションメソッドなしでテンプレートファイルだけ追加すればページが増えていく状態

作ってみたVCフレームワークのサンプルコード

<?php
if (!defined('DS')) {
	define('DS', DIRECTORY_SEPARATOR);
}

//テンプレートのフォルダ名
define("TEMPLATE_DIR","templates");

//アクションの変数名
define("ACTION_VARIABLE_NAME","action");

//アクション名のセパレータ
define("ACTION_SEPALATER","_");

//デフォルトのアクション
define("DEFAULT_ACTION","index");

//テンプレートの拡張子
define("TEMPLATE_EXTENSION","php");

//アクション名を取得
$action = basename($_GET[ACTION_VARIABLE_NAME]?$_GET[ACTION_VARIABLE_NAME]:DEFAULT_ACTION);
$template = TEMPLATE_DIR . DS . implode(DS,explode(ACTION_SEPALATER,$action)) . '.' . TEMPLATE_EXTENSION;

//テンプレートファイルを読み込み
if(file_exists($template)){
	include($template);
}else{
	header("HTTP/1.0 404 Not Found", true, 404);
	exit;
}
?>

使い方

上記のコードをindex.phpって名前で保存する。
同じディレクトリに
template/items/camera.php
のようなファイルを用意する

すると
index.php?action=items_camera
でアクセスできる。

最後に

RailsやCakePHPのようなレイアウト機能があればなお良いと思った。
URLがキレイじゃないのが気になるけどURLがキレイでないと困るサイトでは使わなければ問題ない

One Response to “PHPで(M)VCフレームワーク自作”

  1. [...] 前回作ったフレームワークみたいなやつに、 [...]