おぎろぐはてブロ

なんだかんだエンジニアになって10年以上

php|architectにr3の記事、あと r3に思うこと

Selfkleptomaniacさんのところで知ったのですが、今月のphp|architectMatt Zandstraによる、r3の特集が載ってました。絵なんかも付いて分かりやすいす。
ブログ見てみたら、

In related news, we are days away from a limited GUI release.

http://www.appulsus.com/w/?p=38

ってことです。

r3に思うこと

あと、r3について。使えねーという結論に達した理由。
資料をまとめていたときに、「お、これってテンプレートのプリプロセッサじゃね?」と気づいたのです。
r3のテンプレート中で、<r3:include />タグを使うと、別のテンプレートを読み込みができるのですが、ターゲット(最終的に出力するファイル)のサブテンプレートしか読み込めないのです。なんで、index1.html と index2.html からそれぞれ同じ header.ros というファイルを共通で読み込むことはできないのです。 (まぁ、symlinkすればいけるけどね) どうして、できないんだろうといろいろやってみたけど、無理っぽい。

これができるんだったら、ヘッダやフッタなど、テンプレがincludeしている部分を、generate時に可能な限り展開してしまいたかった。これが出来ると、

  • includeのオーバーヘッドを減らすこと
  • 可能な限りテンプレを展開して、画面を確認しやすくする

というのが実現できるんでないかと思ったのです。

1つ目は、テンプレートの中にincludeが含まれなくなって、各テンプレは1ファイルになって、includeのオーバーヘッドが減ると。Smartyコンパイルしたテンプレートをキャッシュしても、それぞれのテンプレファイルがコンパイルされるだけで、includeのコストは減りません。(include先も展開して含めてしまって固めるってことできるんですかね。。)
そして2つ目。複雑にincludeが含まれていると、細かい部分はいいんですが、画面全体の全体のイメージがテンプレートだけを眺めていても見えなくなってきます。そうなると、実際にプログラムを実行して表示させてみるということになりがち。ただ、特殊な条件下でしか表示されないような画面だとお手上げです。これが、展開されたテンプレートになると、構造がすごく確認しやすいのではないかと。

こういうのできるかもーと思ったけど、できなかったので、ショボーンというのが理由。
概念はすげーおもしろいなと思ってます。