AwesomeFrameworkってどうなってるの?」って言われたんで最新版(0.9.0)をアップしました。

ちょこちょこいじってはいるんですが、相変わらずぱっと見でわかるぐらいのソースです。

追加機能は以下。

  • defineいじればDocumentRootとかを好きな場所に設定できるようになった。
    (いままでは男らしいフラット管理のみだった。でもまだデフォルトはフラット)
  • 設定ファイルを置けば読んでくれるようになった。
    (別に置かなくてもいい)
  • $R($_REQUEST), $S($_SESSION), $C(設定)とか短くアクセスできるようになった。
  • get関数が追加。
    (テンプレ中で<? if (isset($foo)): ?><?=$foo?><? endif; ?>と書きたくないためだけに生まれた。NOTICE切ればいいだけだが…。)

以下サンプル。

アクション(default.php):

&lt;?php
assign('hello', 'Hello World!!!');
forward("view");
?&gt;

テンプレ(view.php):

&lt;html&gt;
&lt;head&gt;&lt;title&gt;&lt;?=fetch('title')?&gt;&lt;/title&gt;&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;&lt;?=fetch('title')?&gt;&lt;/h1&gt;
&lt;p&gt;&lt;?=$hello?&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;

コンポーネント(title.php):

Hello World

(コンポーネントはアクションでもなんでもいい)

結果:

&lt;html&gt;
&lt;head&gt;&lt;title&gt;Hello World&lt;/title&gt;&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;Hello World&lt;/h1&gt;
&lt;p&gt;Hello World!!!&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;

アプリ作るとき(1人か2人を想定)あと面倒なのってDBとValidation。 DBはこの間のヤツがちゃんとできれば簡単になりそう。Validationは…なんも思いつかない。

以下、全ソース。

&lt;?php
//
// AwesomeFramework - extremely simple framework.
//
// Copyright (C) 2005 Masaki Komagata &lt;komagata@p0t.jp&gt;
//     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 =&gt; $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;
    }
}
?&gt;

Comments


Option