「AwesomeFrameworkってどうなってるの?」って言われたんで最新版(0.9.0)をアップしました。
ちょこちょこいじってはいるんですが、相変わらずぱっと見でわかるぐらいのソースです。
追加機能は以下。
- defineいじればDocumentRootとかを好きな場所に設定できるようになった。
(いままでは男らしいフラット管理のみだった。でもまだデフォルトはフラット) - 設定ファイルを置けば読んでくれるようになった。
(別に置かなくてもいい) - $R($_REQUEST), $S($_SESSION), $C(設定)とか短くアクセスできるようになった。
- get関数が追加。
(テンプレ中で<? if (isset($foo)): ?><?=$foo?><? endif; ?>と書きたくないためだけに生まれた。NOTICE切ればいいだけだが…。)
以下サンプル。
アクション(default.php):
<?php
assign('hello', 'Hello World!!!');
forward("view");
?>
テンプレ(view.php):
<html>
<head><title><?=fetch('title')?></title></head>
<body>
<h1><?=fetch('title')?></h1>
<p><?=$hello?></p>
</body>
</html>
コンポーネント(title.php):
Hello World
(コンポーネントはアクションでもなんでもいい)
結果:
<html>
<head><title>Hello World</title></head>
<body>
<h1>Hello World</h1>
<p>Hello World!!!</p>
</body>
</html>
アプリ作るとき(1人か2人を想定)あと面倒なのってDBとValidation。 DBはこの間のヤツがちゃんとできれば簡単になりそう。Validationは…なんも思いつかない。
以下、全ソース。
<?php
//
// AwesomeFramework - extremely simple framework.
//
// Copyright (C) 2005 Masaki Komagata <komagata@p0t.jp>
// All rights reserved.
// This is free software with ABSOLUTELY NO WARRANTY.
//
// You can redistribute it and/or modify it under the terms of
// the PHP License, version 3.0.
//
define('DEFAULT_PAGE', 'default');
define('VERSION', '0.9.0');
define('EXT', '.php');
define('PARAM', 'p');
define('DOCROOT_DIR', dirname(__FILE__) . '/');
define('ROOT_DIR', DOCROOT_DIR);
define('APP_DIR', ROOT_DIR);
define('LIB_DIR', ROOT_DIR);
define('CONF_FILE', ROOT_DIR . 'config.php');
define('INC_FILE', APP_DIR . 'include.php');
define('DOCROOT_DIR_URI', dirname($_SERVER['SCRIPT_NAME']) . '/');
define('ROOT_DIR_URI', DOCROOT_DIR_URI);
$vars = array();
if (file_exists(CONF_FILE)) {
include_once CONF_FILE;
}
if (file_exists(INC_FILE)) {
include_once INC_FILE;
}
session_start();
forward(isset($_REQUEST[PARAM]) ? $_REQUEST[PARAM] : DEFAULT_PAGE);
function forward($page)
{
$C = &$GLOBALS['C'];
$R = &$_REQUEST;
$S = &$_SESSION;
extract($GLOBALS['vars']);
include APP_DIR . '/' . $page . EXT;
}
function fetch($page)
{
ob_start();
forward($page);
$buffer = ob_get_contents();
ob_end_clean();
return $buffer;
}
function redirect($page, $params = array())
{
header('Location: ' . url($page, $params));
exit();
}
function url($page, $params = array())
{
$param = '';
foreach ($params as $name => $value) {
$param .= '&' . $name . '=' . $value;
}
return 'index.php?' . PARAM . '=' . $page . $param;
}
function assign($name, $value)
{
$GLOBALS['vars'][$name] = $value;
}
function assign_by_ref($name, &$value)
{
$GLOBALS['vars'][$name] =& $value;
}
function get($name)
{
if (isset($$name)) {
return $$name;
}
}
?>