クラスが出てこないフレームワーク、AwesomeFrameworkを更新しました。
変更点は
- 余計なものを省いた。
- assign, assign_by_ref関数追加。
というより短いのでソースコードを見たほうが早いです。
index.php:(フレームワーク本体)
<?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("AF_DEFAULT_ACTION", "default");
define("VERSION", "0.7.0");
$vars = array();
forward(isset($_REQUEST["a"]) ? $_REQUEST["a"] : AF_DEFAULT_ACTION);
function forward($action) {
global $vars;
extract($vars);
unset($vars);
include "{$action}.php";
}
function fetch($action) {
ob_start();
forward($action);
$buffer = ob_get_contents();
ob_end_clean();
return $buffer;
}
function assign($name, $value) {
global $vars;
$vars[$name] = $value;
}
function assign_by_ref($name, &$value) {
$vars[$name] =& $value;
}
?>
default.php:(サンプルアプリ:Action)
<?php
assign("message", "World");
forward("view");
?>
view.php:(サンプルアプリ:View)
<html>
<head><title>Hello World</title></head>
<body>
Hello <?=$message?>.
</body>
</html>
自分でライブラリやツールを書いた時、「本当にAwesomeFrameworkより便利か?」と自問して余計に複雑な物を作らないための戒め的存在!
自分で最小限の物を書いてみないと本当にわかったかどうか実感が持てないので地味に修正して行きたいです。