Template
ビューとそれに関連するデータを管理するためのクラスを作成しました。とを実装Iterator
しArrayAccess
、次のように簡単に使用できるように「サブテンプレート」を許可します。
<p><?php echo $template['foo']; ?></p>
<?php foreach($template->post as $post): ?>
<p><?php echo $post['bar']; ?></p>
<?php endforeach; ?>
hash()
とにかく、やなどのインラインコア関数を使用するのではなく、テンプレートに格納されているデータのラッパーとして機能する、date()
というクラスを作成すると便利だと思いました。TemplateData
このようにして、フォーマットの一般的な方法のリストを追加できます。次に例を示します。
echo $template['foo']->asCase('upper');
echo $template['bar']->asDate('H:i:s');
//etc..
$template['foo'] = 'bar';
コントローラでを介して値を設定すると、の値はそれ自体のオブジェクト'bar'
に格納されます。TemplateData
私は魔法を使った__toString()
ので、オブジェクトをエコーすると、その値TemplateData
にキャストし(string)
てダンプします。ただし、マントラコントローラーとビューにもかかわらず、次のようなことを行うときはいつでも、データを変更しないでください。
$template['foo'] = 1;
echo $template['foo'] + 1; //exception
それはで死ぬObject of class TemplateData could not be converted to int
; 文字列にリキャスト しない限り$template['foo']
:
echo ((string) $template['foo']) + 1; //outputs 2
ある種、そのフープを飛び越えなければならないという目的を打ち負かします。この種の動作の回避策はありますか?それとも、ビューでのデータ変更の偶発的な防止として、これをそのまま使用する必要がありますか?