Re: CatalystのNEXTが気持ち悪い説

| コメント(0) | トラックバック(0)
ほえ?なんで?

http://blog.hide-k.net/archives/2007/12/catalystnext.php
使う側としては継承順に呼ばれることを期待しているのに、思ったとおりに動かない。
つまり、使う側がプラグインの中身の挙動まで気を使わなければいけない。
これはClass::C3になっても同じ。

「正しい」継承順にメソッド呼ぶのはClass::C3の特徴だからメソッドの呼び出し順に変化はないでしょう。NEXTの場合は親クラスが小クラスより先に呼ばれる事もあるから気持ち悪いけど。

そもそもメソッドの中で親クラスのメソッドを呼ぶタイミングがその他のロジックの前か後かはこのエントリに書いてある継承順云々とはまた違う気がする。書いてあるコードを見ても、それは普通のOOってそういうもんなんじゃないの、としか言いようがないんだが。

なんか気持ち悪いというからには他の理由があるんじゃないだろうか。


追記

http://b.hatena.ne.jp/miyagawa/#bookmark-6914324
継承とは関係なくて、フックポイントの順序をプラグイン側できめるというCatalystの仕様に問題があるとおもう
ああ、つまり$c->NEXT::execute()とかが走るタイミングほげほげという事かな。それなら分かるかも。本来ならメソッドディスパッチ内で行う事は普通の継承範囲内で行って、Pluginは$c->run_hookみたいな形で一気に動かせばええんだろうな。

Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ