MooseX::LazyRequire.3pm

Langue: en

Autres versions - même langue

Version: 2010-07-19 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

MooseX::LazyRequire - Required attributes which fail only when trying to use them

SYNOPSIS

     package Foo;
 
     use Moose;
     use MooseX::LazyRequire;
 
     has foo => (
         is            => 'ro',
         lazy_required => 1,
     );
 
     has bar => (
         is      => 'ro',
         builder => '_build_bar',
     );
 
     sub _build_bar { shift->foo }
 
 
     Foo->new(foo => 42); # succeeds, foo and bar will be 42
     Foo->new(bar => 42); # succeeds, bar will be 42
     Foo->new;            # fails, neither foo nor bare were given
 
 

DESCRIPTION

This module adds a "lazy_required" option to Moose attribute declarations.

The reader methods for all attributes with that option will throw an exception unless a value for the attributes was provided earlier by a constructor parameter or through a writer method.

CAVEATS

Apparently Moose roles don't have an attribute metaclass, so this module can't easily apply its magic to attributes defined in roles. If you want to use "lazy_required" in role attributes, you'll have to apply the attribute trait yourself:
     has foo => (
         traits        => ['LazyRequire'],
         is            => 'ro',
         lazy_required => 1,
     );
 
 

AUTHOR

Florian Ragwitz <rafl@debian.org> This software is copyright (c) 2010 by Florian Ragwitz.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.