NAME
Object::AutoAccessor - Accessor class by using AUTOLOAD
SYNOPSIS
use Object::AutoAccessor;
my $struct = {
foo => {
bar => {
baz => 'BUILD OK',
},
},
};
# Now let's easily accomplish it.
my $obj = Object::AutoAccessor->build($struct);
print $obj->foo->bar->baz; # prints 'BUILD OK'
# OK, now reverse it!
$obj->foo->bar->baz('TO HASHREF');
my $hashref = $obj->as_hashref;
print $hashref->{foo}->{bar}->{baz}; # prints 'TO HASHREF';
# Of course, new() can be used.
$obj = Object::AutoAccessor->new();
# setter methods
$obj->foo('bar');
$obj->set_foo('bar');
$obj->param(foo => 'bar');
# getter methods
$obj->foo();
$obj->get_foo();
$obj->param('foo');
# $obj->param() is compatible with HTML::Template->param()
my @keywords = $obj->param();
my $val = $obj->param('hash');
$obj->param(key => 'val');
my $tmpl = HTML::Template->new(..., associate => [$obj], ...);
DESCRIPTION
Object::AutoAccessor is a Accessor class to get/set values by AUTOLOADed
method automatically. Moreover, param() is compatible with
"HTML::Template" module, so you can use Object::AutoAccessor object for
"HTML::Template"'s "associate" option.
METHODS
new ( [ OPTIONS ] )
Create a new Object::AutoAccessor object. Then you can use several
options to control object's behavior.
build ( HASHREF, [ OPTIONS ] )
Create a new object and accessors easily from given hashref
structure. Then you can use several options to control object's
behavior.
as_hashref ( )
Reconstruct and returns hashref from Object::AutoAccessor object.
new_node ( NAME, [ OPTIONS ] )
Create a new Object::AutoAccessor object as child instance by
renew() .
node ( NAME, [ NAME, ... ] )
An accessor method for child instance of Object::AutoAccessor
object.
has_node ( NAME )
If object has child instance then it return TRUE.
renew ( [ OPTIONS ] )
Create a new Object::AutoAccessor object to remaining current
options.
KEY ( [ VALUE ] )
This method provides an accessor that methodname is same as keyname
by using AUTOLOAD mechanism.
# setter methods
$obj->foo('bar');
$obj->set_foo('bar');
$obj->param(foo => 'bar');
# getter methods
$obj->foo();
$obj->get_foo();
$obj->param('foo');
param ( [ KEY => VALUE, ... ] )
This method is compatible with param() method of HTML::Template
module.
# set value
$obj->param(foo => 'bar');
$obj->param(
foo => 'bar',
bar => [qw(1 2 3)],
baz => { one => 1, two => 2, three => 3 }
);
# get value
$obj->param('foo'); # got 'bar'
# get list keys of parameters
@keys = $obj->param();
autoload ( BOOLEAN )
This is the method to switch behavior of the
AUTOLOADed-accessor-method. If set to 0, the object cannot use the
AUTOLOADed-accessor-method such as foo() , set_foo() and get_foo()
but param() .
$obj->new_node('foo')->param(bar => 'baz');
$obj->autoload(1);
$baz = $obj->foo->bar; # OK
$obj->autoload(0);
$baz = $obj->node('foo')->param('bar'); # OK
$baz = $obj->foo->bar; # NG
AUTHOR
Copyright 2005-2006 Michiya Honda, <
[email protected]> All rights reserved.
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
SEE ALSO
HTML::Template.