Class::AccessorMaker
generate common accessor method with default values.
####
With constructor
package Users;
use Class::AccessorMaker {
username => "guest",
password => "",
role => "guest",
groups => [ "guest" ] };
package main;
my $usr = Users->new(username => $uname, password => $pw);
With init constructor
package MailThing;
use Class::AccessorMaker {
to => "",
from => "hartog\@2organize.com",
cc => "",
bcc => "",
bounce => "" }, "new_init";
sub init {
my ($self) = @_;
...
}
package main;
my $mlr = MailThing->new();
Without constructor
package HitMan;
use Class::AccessorMaker {
victim => "",
location => "",
data => {} }, "no_new";
sub new {
my $class = ref($_[0]) or $_[0]; shift;
return bless({}, $class);
}
package main;
Of course the first example describes some sort of user system,
which assumes you are a guest by default. The second example
is some sort of mailer-object. And the third is used by a lot
of serial killers out there...
##
##
The AccesorMaker takes in, at use-time, a hash-reference and an
extra keyword. It uses the keys of the hash-reference to create
accessor-methods in the namespace of the caller. The values that
are given to the keys are the default value of the accessor.
Class::AccessorMaker will create a constructor (called "new()")
by default.
This constructor will be able to take that nice and shiny
hash-like structure as you can see in the first example.
If you want your constructor to run your objects "init()" routine
you can specify the keyword "new_init". If you want to write your
own "new()" routine you can use "no_new".
##
##
This module is still under some sort of development, and I am
expecting to release things like ReadOnly / WriteOnce accessor
methods in the near future. I alredy have
Class::AccessorMaker::Private out there for you, which could
prove to be very usefull for you.
##
##
Please do not put those perl-reserved names in there like
DESTROY, import, AUTOLOAD, and so on. It will hurt you badly.
Q: "But why do you not filter those?"
A: "This is perl baby, you can do whatever you like..."
And besides, there is going to be someone out there who is
actualy going to put it to good use...
##
##
Hartog 'Sinister' de Mik