NAME
Object::Simple - generate accessor with default, and provide constructor
INSTALLATION
cpan Object::Simple
SYNOPSIS
package YourClass;
use base 'Object::Simple';
# Generate accessor
__PACKAGE__->attr('x');
# Generate accessor with default (scalar)
__PACKAGE__->attr(x => 0);
# Generate accessor with default (reference or instance)
__PACKAGE__->attr(x => sub { [] });
__PACKAGE__->attr(x => sub { {} });
__PACKAGE__->attr(x => sub { SomeClass->new });
# Generate accessors at once
__PACKAGE__->attr([qw/x y z/]);
# Generate accessors with default at once
__PACKAGE__->attr([qw/x y z/] => 0);
# Generate class accessor
__PACKAGE__->class_attr('x');
__PACKAGE__->class_attr(x => 0);
# Generate inheritable class accessor
__PACKAGE__->class_attr('x', default => 0, inherit => 'scalar_copy');
__PACKAGE__->class_attr('x', default => sub { [] }, inherit => 'array_copy');
__PACKAGE__->class_attr('x', default => sub { {} }, inherit => 'hash_copy');
__PACKAGE__->class_attr(
'x', default => sub { SomeClass->new }, inherit => sub { shift->clone });
# Generate dual accessor, which work as normal accessor or class accessor
__PACKAGE__->dual_attr('x');
__PACKAGE__->dual_attr(x => 0);
# Generate inheritable dual accessor
__PACKAGE__->dual_attr('x', default => 0, inherit => 'scalar_copy');
__PACKAGE__->dual_attr('x', default => sub { [] }, inherit => 'array_copy');
__PACKAGE__->dual_attr('x', default => sub { {} }, inherit => 'hash_copy');
__PACKAGE__->dual_attr(
'x', default => sub { SomeClass->new }, inherit => sub { shift->clone });
package main;
# Constructor new()
my $obj = YourClass->new;
my $obj = YourClass->new(x => 1, y => 2);
my $obj = YourClass->new({x => 1, y => 2});
# Set attribute
$obj->x(1);
# Setter method chain is available
$obj->x(1)->y(2);
# Get attribute
my $x = $obj->x;
DESCRIPTION
Object::Simple is the generator of accessor.
If you want to create a class, you must write many accessors by yourself,
so you will be tired of writing accesors.
Object::Simple help you to create accessor.
COPYRIGHT AND LICENCE
Copyright (C) 2008 Yuki Kimoto
http://d.hatena.ne.jp/perlcodesample/ ( Japanese )
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.