NAME
Class::Data::Lazy - Create class data with laziness.
SYNOPSIS
use Class::Data::Lazy qw(
foo
);
Is equivalent to:
sub foo {
my $class = shift;
my $value = $class->_build_foo;
*{"${class}::foo"} = sub { $value };
return $value;
}
DESCRIPTION
Class::Data::Lazy is lazy class data maker.
I want to write lazy class accessor.
MOTIVATION
When I'm writing a context class for web application, some thing need lazy building.
For example:
package MyApp;
use Class::Data::Lazy qw(
memcached
);
sub _build_memcached {
my $class = shift;
my $conf = $class->config->{'Cache::Memcached::Fast'}
or die "Missing configuration for Cache::Memcached::Fast";
Cache::Memcached::Fast->new($conf);
}
Q. Why should it be lazy class method?
A. Because $class->config
is not available when the class is loading.
LICENSE
Copyright (C) tokuhirom.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
tokuhirom <tokuhirom@gmail.com>
SEE ALSO
If you wan to declare the lazy instance accessor, please try Class::Accessor::Lite::Lazy.