プログラマー日記(2005-08-09)
なおRailsは、Rubyという言語の特徴を最大限に生かし、またJavaのフレームワークを参考にせず設計されています。PHPのフレームワークも、Javaのさるまねに陥ることなく、PHPの良さとは何かを考えながら、製作していただけたらと思います。
PHPの良さとは何か!
おれの考えたPHPの良さ:
- 関数いっぱい
- HTMLに埋め込める
- オブジェクト指向とか知らなくても作れる
それをフレームワークに生かせないかということで、一発ネタのはずだったAwesomeFrameworkをちょっと変えてみました。
AwesomeFramework-0.5.0.tar.gz
1.関数いっぱい
AwesomeFramework(以下AF)は関数のみ!(クラスとか無い)
- forward($action) : アクションを実行する。(処理が移る)
- redirect($action) : アクションにリダイレクトする。(別リクエストになる)
- fetch($action) : アクションの実行結果の出力を取る。
2.HTMLに埋め込める
AF標準のRendererはPHP!
いままでは「HTMLに埋め込める機能いらねぇ」とか思ってましたが、たとえば単に
Hello World!
と書いたテキストに拡張子「.php」をつけてincludeすると全内容が勝手に出力される!
PHPタグの外側は勝手に出力される=PHPタグが無いテキストは全部が普通に出力される。
3.オブジェクト指向とか知らなくても作れる
AFのactionはただのPHPファイル。関数ですらなく、上から順番に実行されます!
Hello Worldアプリのaction:
<?php
$_REQUEST["message"] = "Hello World";
forward("view");
?>
PHPファイルにするとグローバル変数地獄になって大変だろうと思っていたんですが、全てのactionはforward関数内でincludeされるのでフィルタチェイン的構造になったforward関数のスコープになって何気にnamespaceが分かれてる!
ファイルをactionの単位として$selfというそのaction自身の情報を含んだ変数をインポートすることにしました。($thisだと混乱するのでPerl的な$self)
$selfの中身:
Array
(
[action] => index
[file] => index.php
[abs_path] => D:/Program Files/eclipse-3.0.2/workspace/AwesomeFramework/actions/index.php
[abs_uri] => http://localhost/index.php?action=index
[resource] => Array
(
)
)