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

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.