Moose::Role - The Moose Role



NAME

Moose::Role - The Moose Role


SYNOPSIS

  package Eq;
  use Moose::Role; # automatically turns on strict and warnings
  requires 'equal';
  sub no_equal {
      my ($self, $other) = @_;
      !$self->equal($other);
  }
  # ... then in your classes
  package Currency;
  use Moose; # automatically turns on strict and warnings
  with 'Eq';
  sub equal {
      my ($self, $other) = @_;
      $self->as_float == $other->as_float;
  }


DESCRIPTION

The concept of roles is documented in the Moose::Manual::Role manpage. This document serves as API documentation.


EXPORTED FUNCTIONS

Moose::Role currently supports all of the functions that Moose exports, but differs slightly in how some items are handled (see CAVEATS below for details).

Moose::Role also offers two role-specific keyword exports:

requires (@method_names)

Roles can require that certain methods are implemented by any class which does the role.

excludes (@role_names)

Roles can exclude other roles, in effect saying "I can never be combined with these @role_names". This is a feature which should not be used lightly.

unimport

Moose::Role offers a way to remove the keywords it exports, through the unimport method. You simply have to say no Moose::Role at the bottom of your code for this to work.

Moose::Role-init_meta(for_class => $role, metaclass => $metaclass) >>

The init_meta method sets up the metaclass object for the role specified by for_class. It also injects a a meta accessor into the role so you can get at this object.

The default metaclass is the Moose::Meta::Role manpage. You can specify an alternate metaclass with the metaclass parameter.


METACLASS

When you use Moose::Role, you can specify which metaclass to use:

    use Moose::Role -metaclass => 'My::Meta::Role';

You can also specify traits which will be applied to your role metaclass:

    use Moose::Role -traits => 'My::Trait';

This is very similar to the attribute traits feature. When you do this, your class's meta object will have the specified traits applied to it. See Moose/TRAIT NAME RESOLUTION for more details.


CAVEATS

Role support has only a few caveats:


BUGS

All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT.


AUTHOR

Stevan Little <stevan@iinteractive.com>

Christian Hansen <chansen@cpan.org>


COPYRIGHT AND LICENSE

Copyright 2006-2009 by Infinity Interactive, Inc.

http://www.iinteractive.com

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

 Moose::Role - The Moose Role