maple: Action の setter/getter を何とかしたい 2
できた。
BeanUitls.class.php-20050908.patch
Filter_Action.class.php-20050908.patch
前エントリの setter なしパラメータ渡しを実現するパッチ。当然既存の setter 渡しもそのまま可能です。かなり手抜き実装ですが、こんなとこだろう…
[Action]
logic = ref:Logic ; これは既存でもする良くある書き方
name = ; ブランクなら Request "name" を Action の name へ代入
mail = param:email ; Request "email" を Action の mail へ代入
tel = 0123456789 ; 0123456789 を Action の tel へ代入
zip = sess:zip ; Request "zip" を Action の zip へ代入しつつ
; Session へも zip で代入
pet = param:yourPet,sess:pet ; あわせ技。変態コードも許容する :)
food = meat,sess:hailFood ; こんなことも余裕!
class Example
{
// {{{ properties
/**#@+
* @access public
*/
var $logic;
var $name;
var $mail;
var $tel;
var $zip;
var $pet;
var $food;
...
もはや setter method を書く必要がないぜ!
トラックバック(0)
このブログ記事を参照しているブログ一覧: maple: Action の setter/getter を何とかしたい 2
このブログ記事に対するトラックバックURL: http://hatotech.org/mt-admin/mt-tb.cgi/522

すばらしい!
ただ、合わせ技を使った場合、リクエストパラメーターpetは、yourPetとpetの両方に入ってしまうのかな?
Actionの中に同じ意味を持つ変数が2つあるのが、背中がムズムズしてしまうA型なもので。
どうでもいいことだけど。。。
いや、Petの例は、
Action 内変数: pet
Request name: yourPet
session で保存する名称: pet
です。これで、仮に yourPet が dog の場合、
Action では $pet = dog になるし、$session->setParameter('pet', 'dog'); が実行されます。yourPet という変数は Action まで持ち込まれません。
html での tag name と、Action 内変数名が異なり、session にも保存したい場合の例ですね。
なるほど、勘違いしておりました。
ありがとうございます。