frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

アクセサ。

DTOやらVOやら作ってると

もうアクセサ書くのが面倒で面倒で

あー、perlEclipseみたいに便利な機能のついた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 -w

use 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;