Class::Accessor::Fast とかの継承の罠
package Parent;
use parent qw/Class::Accessor::Fast/;
な Parent クラスがある場合に、これを継承したクラス Child をつくる場合に
package Child;
use parent qw/Parent/;
__PACKAGE__->mk_accessors(qw/foo/);
などとしてしまいがちだが、基本的に Parent の作者は、C::A::Fast をつかっているところは別に仕様だとは考えていないので、途中で不意に Class::Accessor::Fast から Moose に転向したりする場合がある。
というわけで、そういう場合には
package Child;
use parent qw/Parent/;
use Class::Accessor::Lite;
Class::Accessor::Lite->mk_accessors(qw/foo/);
のように、Class::Accessor::Lite をつかうとよいでしょう。
Published: 2010-12-06(Mon) 04:39