The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Class::Accessor::Fast::WithBuilder - Class::Accessor::Fast with lazy defaults

VERSION

0.0101

DESCRIPTION

This module will require builders for each attribute defined. This means that adding attributes with this module, is something like this code from Moose:

    has age => (
        is => "ro", # or rw
        lazy => 1,
        builder => "_build_age",
    );

NOTE: All builders will be called as late as possible.

SYNOPSIS

    package Foo;
    use base qw(Class::Accessor::Fast::WithBuilder);

    Foo->mk_accessors(qw( name age ));

    sub _build_name { $_[0]->_croak("'name' attribute cannot be built!") }
    sub _build_age { 0 }

    print Foo->new->name; # BOOM!
    print Foo->new->age; # Will print "0"
    print Foo->new({ age => 123 })->age; # Will print "123"

METHODS

make_accessor

See "make_accessor" in Class::Accessor

make_ro_accessor

See "make_ro_accessor" in Class::Accessor

make_wo_accessor

This is not implemented. (See "make_wo_accessor" in Class::Accessor)

COPYRIGHT & LICENSE

AUTHOR

Jan Henning Thorsen jhthorsen at cpan.org