Catalyst のソースを読んでいると
Class::Data::Accessor と Class:Data::Inheritable が出てくる。つかわれかたは、ほとんど同じに見えるので、ちょっとソースを読んでみた。
読んでみると
Class::Data::Accessor のほうは、オブジェクトメソッドとして呼ばれたときに、オブジェクトのデータにアクセスする。
こんな感じ。
use strict; use warnings; use base qw/Class::Data::Accessor Class::Data::Inheritable/; main->mk_classaccessor('hoge'); # Class::Data::Accessor main->mk_classdata('fuga'); # Class::Data::Inheritable main->hoge('aaaa'); main->fuga('aaaa'); my $obj = bless {}, 'main'; print main->hoge."\n"; # aaaa print main->fuga."\n"; # aaaa print $obj->hoge."\n"; # aaaa print $obj->fuga."\n"; # aaaa $obj->hoge('bbbb'); $obj->fuga('bbbb'); print main->hoge."\n"; # aaaa print main->fuga."\n"; # bbbb print $obj->hoge."\n"; # bbbb print $obj->fuga."\n"; # bbbb
めもめも
あ!あと
Class::Data::Accessor のほうもちゃんと Inheritable (継承可能) だった。
めもめも