Paradigm Shift Design

ISHITOYA Kentaro's blog.

ページプロパティ参照方法

Ficusのpagesはページクラスとテンプレートが一対一対応.Teedaに同じ.でもTeedaを知る以前からそういう仕組みだった.
確かpagesを作り始めたのは・・・ノートを見てもわからなかった・・・orz
きっと何かを見てまねしたんだと思うけど.

で,最近Teedaに影響されてページのプロパティを定義すると,

  • テンプレートに自動でAssign
  • POST/GET/SESSIONの値を自動でプロパティに代入

してくれるようにした.

でページが次のように定義されていて

<?php 
class Soya_TestPage extends Ficus_AbstractPage{
    /**
     * @Required
     * @Regex(pattern="[0-9]")
     */
    protected $testOne;
    protected $testTwo;
    /**
     * @Bean("Soya_TestBean")
     */
    protected $testThree;
    public function doDefault(){
    }
}
?>

Soya_TestBeanがこうなっている場合

<?php
class Soya_TestBean extends Ficus_Bean{
    protected $id;
    protected $name;
}
?>

テンプレートからは

<form>
<input type="edit" name="testThree.id"/>
<input type="edit" name="testThree.name"/>
</form>

{$testThree->id()}
{$testThree->name()}

としてアクセスできる.値へのアクセスはことによったら

{$testThree.id}
{$testThree.name}

とするかもしれない.Smartyだとオブジェクトの入れ子構造にアクセスできないから.


こうするとだいぶScaffold周りが簡単になるような気がする.


なぜPHPにはMapleやSymphonyやなんやらいっぱいFrameWorkがあるのにそれを使わないのかって?馬鹿になるからです.もとい楽しいからです.