Graham Knop > Moo-1.004002 > Moo::Role

Download:
Moo-1.004002.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  3
Open  3
View/Report Bugs
Module Version: 1.004002   Source   Latest Release: Moo-1.006000

NAME ^

Moo::Role - Minimal Object Orientation support for Roles

SYNOPSIS ^

 package My::Role;

 use Moo::Role;

 sub foo { ... }

 sub bar { ... }

 has baz => (
   is => 'ro',
 );

 1;

And elsewhere:

 package Some::Class;

 use Moo;

 # bar gets imported, but not foo
 with('My::Role');

 sub foo { ... }

 1;

DESCRIPTION ^

Moo::Role builds upon Role::Tiny, so look there for most of the documentation on how this works. The main addition here is extra bits to make the roles more "Moosey;" which is to say, it adds "has".

IMPORTED SUBROUTINES ^

See "IMPORTED SUBROUTINES" in Role::Tiny for all the other subroutines that are imported by this module.

has

 has attr => (
   is => 'ro',
 );

Declares an attribute for the class to be composed into. See "has" in Moo for all options.

CLEANING UP IMPORTS ^

Moo::Role cleans up its own imported methods and any imports declared before the use Moo::Role statement automatically. Anything imported after use Moo::Role will be composed into consuming packages. A package that consumes this role:

 package My::Role::ID;

 use Digest::MD5 qw(md5_hex);
 use Moo::Role;
 use Digest::SHA qw(sha1_hex);

 requires 'name';

 sub as_md5  { my ($self) = @_; return md5_hex($self->name);  }
 sub as_sha1 { my ($self) = @_; return sha1_hex($self->name); }

 1;

..will now have a $self->sha1_hex() method available to it that probably does not do what you expect. On the other hand, a call to $self->md5_hex() will die with the helpful error message: Can't locate object method "md5_hex".

See "CLEANING UP IMPORTS" in Moo for more details.

SUPPORT ^

See Moo for support and contact information.

AUTHORS ^

See Moo for authors.

COPYRIGHT AND LICENSE ^

See Moo for the copyright and license.

syntax highlighting: