アクセサ。
DTOやらVOやら作ってると
もうアクセサ書くのが面倒で面倒で
あー、perlでEclipseみたいに便利な機能のついたIDEはないのかしらー…とか思ったり。
って、勿論「Class::Accessor::Fast」やら使えばいいんだけど
またもやライブラリのインストールがなぁ…
事情があって、標準じゃないのを使うのが面倒だったり。
あうー。かと言って、個人的に作って実装すると
後でソース見た人が「あぁ、あれね」って知ってる物じゃないから
ちょいとソースを追ってもらわないとアカンしなぁ。
でも結局、簡易版 Class::Accessor::Fast は、こういう事なのね?
本当に実装するかどうかは、おいておいて。
・DTO.pm
package DTO;use strict;
__PACKAGE__->_makeAccesor(qw/age name address/);
sub new {
my $me = shift;
my $param = {
};
bless $param, $me;
}
sub _makeAccesor {
my $me = shift;
my $field = '';
my $code = '';
foreach $field (@_) {
$code = sub {
my $me = shift;
$me->{$field} = shift if @_;
return $me->{$field};
};
no strict 'refs';
*{$field} = $code;
}
}
1;
・DTO::User.pm
package DTO::User;use base qw/DTO/;
__PACKAGE__->_makeAccesor(qw/bloodGroup birthday/);
1;
・test.pl
#!/usr/bin/perl -wuse strict;
use DTO;
use DTO::User;
my $objDTO = DTO->new();
$objDTO->age(35);
print $objDTO->age."\n";
$objDTO->name('anigon');
print $objDTO->name."\n";
my $objUser = DTO::User->new();
$objUser->bloodGroup('A');
print $objUser->bloodGroup()."\n";
$objUser->birthday('19720524');
print $objUser->birthday()."\n";
exit;