RhacoのTemplateParserについてのメモ
2005年11月19日(土) 08:17
RhacoのO/Rで動的にmodel系phpコードをジェネレートするために、Rhacoのテンプレートシステムを復習(ノードキュメントだからな、今のところ)。
RhacoのUnitTestを使用して、test.txtを処理してみた。
やはりWeb系のテンプレートを主に指向しているので、sgml系でないものを処理しようとするとちょっとテンプレートの見た目がビミョー。
以下超簡易サンプルコード
タグパーサ系のクラス
- tag.TagParser: テンプレートの基底クラス。read/writeやキャッシュを制御する。
- tag.TemplateParser: TagParserを継承したクラス。ループ等を制御する。
- tag.HtmlParser: TemplateParserを継承したクラス。htmlに特化したinputタグ等の制御を行う。
RhacoのUnitTestを使用して、test.txtを処理してみた。
やはりWeb系のテンプレートを主に指向しているので、sgml系でないものを処理しようとするとちょっとテンプレートの見た目がビミョー。
以下超簡易サンプルコード
- TemplateTest.php
<?php
define("RHACO_DIR","/open/workspace/rhaco/");
require_once(RHACO_DIR."rhaco.php");
define("LOG_DISP_LEVEL", "debug");
Rhaco::import("test/UnitTest");
Rhaco::import("tag/TemplateParser");
class TemplateTest extends UnitTest {
var $templateParser;
function setUp() {
$this->templateParser = new TemplateParser();
}
function testTemplateExec() {
$list = array();
$list[] = "x";
$list[] = "y";
$list[] = "z";
$arg["testData"] = $list;
$this->templateParser->setRequest($arg);
print $this->templateParser->write("test/test.txt");
}
}
new TemplateTest();
?>
- test/test.txt
test text for TemplateParser
<loop class="testData" id="data">
<if pattern="{$data} == 'x'">
It's X!
<else>
It's not X!
</if>
{$data}:
</loop>
end
- 実行結果
[Debug 2005/11/19 22:07:46]:[templateparser] view file [test/test.txt]
test text for TemplateParser
It's X!
x:
It's not X!
y:
It's not X!
z:
end