「PHP DOMパーサを使ったテンプレートエンジン」Runemaster
できました。
Runemaster (http://hatotech.org/runemaster/)
これまで「PHP DOMパーサを使ってテンプレートエンジンを作ってみる」としてエントリをあげてきたライブラリが、このたびめでたく(まだベータ的なものですが)初めてのリリースと相成りました。
ライブラリが今の形に落ち着いてからドキュメントをカリカリと書いてたんですがこれが地味に時間がかかってしまっていたので、思い切って 2/3 ほど書いた現在の状態でひとまずリリースしちゃうことにしました。
このまま継続してドキュメントは書き進めていきます。数日単位でポツポツといった感じになるでしょうが、上記サイトに掲載していきますのでどうぞよろしくお願いします。
ちなみにこいつの名前については、はてブにて小山さんより「カッコイイ名前を付けるように」というお達しがありましたので、このようになりました。
Runemasterは、多彩なSpellを組み合わせることで (x)html の力を Runeストーンに刻み込み、埋め込まれた秘められし力を引き出すことで様々な能力を発揮させることができるのだ!(ドギャァーン)
トラックバック(0)
このブログ記事を参照しているブログ一覧: 「PHP DOMパーサを使ったテンプレートエンジン」Runemaster
このブログ記事に対するトラックバックURL: http://hatotech.org/mt-admin/mt-tb.cgi/724

こんにちは。はじめまして、heavenshell と申します。
Runemaster に凄く興味を持っています。
少し触っていて気になった事があるので、報告させて頂きます;;
# どこに報告すれば良いか分からなかったので・・・
1.error_reporting が E_ALL|E_STRICTの場合、Strict 警告が出ます。
[エラー内容]
Strict standards: Only variables should be assigned by reference in /xx/Rune/Spell/Variable/Controller.php on line 145
$parameter = &$this->_runic->getParameter('rune_spell_variable');
ここの参照で Strict 警告が出てるようです。
参照を外すと、出なくなりました。外すと何か問題あるでしょうか?
出たのは、テンプレートで foreach をまわすような値をassign した場合に発生しました。
[コード]
$master = new Rune_Master('/path/to/template/');
$obj = new stdClass();
$obj->item_list = array('book', 'stone', 'spell');
$master->assign($obj);
$master->cast('template');
2.ネストした配列を assign した場合に__cloneでエラーが発生しました。
[エラー内容]
Fatal error: __clone method called on non-object in /xx/Rune/Spell/Variable/Controller.php 147
ドキュメントにも記述されていないやりかたなので、想定外な事かもしれませんが・・。
[コード]
$master = new Rune_Master('/path/to/template/');
$array = array(
'aaaa' => 'ああああ',
'iiii' => 'いいいい',
'uuuu' => 'うううう'
);
$list = array(
'list' => $array
);
$master->assign($list);
$master->cast('template');
ネストした配列の場合は、仕様外なのかもしれませんが・・・。
Rune/Spell/Variable/Controller.php で、以下のようにすれば、使用できました。アドホックな対応かもしれません(汗)
$parameter = $this->_runic->getParameter('rune_spell_variable');
if (is_array($parameter['variables'])) {
$parameter['variables'] = (object)$parameter['variables'];
}
もしよろしければ、再現コードや、パッチをお送りさせて頂きたいんですが、どちらにお送りすればよろしいでしょうか?
どうも、こんにちは。
実は現在リリースしている内容も以後も、svn へはいくつかの修正をコミットしているんです。(この辺どっかでちゃんとリリースしないとですね。)
2.についてはどうもheadでは解決してるっぽいです。
1も参照(多分PHP4時のくせが残ってたみたいで)を外したものでspecを走らせましたが問題は出なかったので、さくっとheadに適応しました。
以下のパッケージで再確認していただけますか?
http://hatotech.org/kumatch/datas/Runemaster-r40.tar.gz
こんにちは。
確認しました〜。
両方とも無事にエラー・ワーニングなしに動作しました。
ありがとうございました〜
svn から co すれば良かったんですね(汗)
すっかり見落としてました・・・。
ところで spec なんですが、Stagehand_TestRunner をかまさないと動作しないんですね。
PHPSpec 単体で動くと思って実行させたら動作しなくて、焦りましたw