# 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](http://search.cpan.org/perldoc?Class::Accessor::Lite::Lazy).