NAME

Object::AutoAccessor - Accessor class by using AUTOLOAD

SYNOPSIS

use Object::AutoAccessor;

my $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');

# set/get array
$obj->array([qw(foo bar)]);
$obj->push(array => 'baz');
my $baz = $obj->pop('array');
my $foobar = $obj->join(',', 'array'); # got 'foo,bar'

# set/get hash
$obj->hash(+{ foo => 'fooval', bar => 'barval' });
my $hashref = $obj->hash;
my @keys = $obj->keys('hash');
my @values = $obj->values('hash');
my ($key, $val) = $obj->each('hash');

# set/get coderef
$obj->code(sub { print "CODEREF\n" });
my $code = $obj->code;
$code->();

# set/get globref
$obj->glob(\*STDOUT);
my $glob = $obj->glob;
print $glob "Hello\n";

# is_hashref/arrayref/coderef/globref/scalar
$obj->is_hashref('hash');
$obj->is_arrayref('array');
$obj->is_coderef('code');
$obj->is_globref('glob');
$obj->is_scalar('foo');

# $obj->param() is compatible with HTML::Template->param()
my @keywords = $obj->param();
my $val = $obj->param('hash');
$obj->param(key => 'val');

DESCRIPTION

Object::AutoAccessor is a Accessor class to get/set values by AUTOLOADed method automatically, and also can use various methods of the same name as built-in functions such as push() , pop() , each() , join() , length() , sprintf() and so on. 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.

  • autoload

    If set to 0, the object cannot use the AUTOLOADed-accessor-method such as foo() , set_foo() and get_foo() but param() . Defaults to 1.

  • bindstyle

    If set to 'sql', behavior of bind() method changes into SQL-style-quoting. Defaults to 'normal' or undef.

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();
bind ( KEY, BIND )

This method provides a simple replacing mechanism that changes placeholder to bindings just looks like execute() method of DBI.

$obj->sentence(q{What is the ? ? in ?\?});

# $result is "What is the highest mountain in Japan?"
$result = $obj->bind(sentence => qw(highest mountain Japan));
bindstyle ( STYLE )

If you want SQL-style-quoting, use bindstyle() and set value 'sql'.

@binds = ('bar' "It's OK" '-0.123');
$obj->bindstyle('sql');
$obj->statement(q{SELECT * FROM foo WHERE BAR = ? AND BAZ = ? AND DECIMAL = ?});

# $result is "SELECT * FROM foo WHERE BAR = 'bar' AND BAZ = 'It''s OK' AND DECIMAL = -0.123"
$result = $obj->bind(statement => @binds);
as_hashref ()

As shown in name. :)

AUTHOR

Copyright 2005 Michiya Honda, <pia@cpan.org> 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.