Moose::Meta::Role(3) User Contributed Perl Documentation Moose::Meta::Role(3)NAMEMoose::Meta::Role - The Moose Role metaclass
VERSION
version 2.0604
DESCRIPTION
This class is a subclass of Class::MOP::Module that provides additional
Moose-specific functionality.
Its API looks a lot like Moose::Meta::Class, but internally it
implements many things differently. This may change in the future.
INHERITANCE
"Moose::Meta::Role" is a subclass of Class::MOP::Module.
METHODS
Construction
Moose::Meta::Role->initialize($role_name)
This method creates a new role object with the provided name.
Moose::Meta::Role->combine( [ $role => { ... } ], [ $role ], ... )
This method accepts a list of array references. Each array
reference should contain a role name or Moose::Meta::Role object as
its first element. The second element is an optional hash
reference. The hash reference can contain "-excludes" and "-alias"
keys to control how methods are composed from the role.
The return value is a new Moose::Meta::Role::Composite that
represents the combined roles.
$metarole->composition_class_roles
When combining multiple roles using "combine", this method is used
to obtain a list of role names to be applied to the
Moose::Meta::Role::Composite instance returned by "combine". The
default implementation returns an empty list. Extensions that need
to hook into role combination may wrap this method to return
additional role names.
Moose::Meta::Role->create($name, %options)
This method is identical to the Moose::Meta::Class "create" method.
Moose::Meta::Role->create_anon_role
This method is identical to the Moose::Meta::Class
"create_anon_class" method.
$metarole->is_anon_role
Returns true if the role is an anonymous role.
$metarole->consumers
Returns a list of names of classes and roles which consume this
role.
Role application
$metarole->apply( $thing, @options )
This method applies a role to the given $thing. That can be another
Moose::Meta::Role, object, a Moose::Meta::Class object, or a (non-
meta) object instance.
The options are passed directly to the constructor for the
appropriate Moose::Meta::Role::Application subclass.
Note that this will apply the role even if the $thing in question
already "does" this role. "does_role" in Moose::Util is a
convenient wrapper for finding out if role application is
necessary.
Roles and other roles
$metarole->get_roles
This returns an array reference of roles which this role does. This
list may include duplicates.
$metarole->calculate_all_roles
This returns a unique list of all roles that this role does, and
all the roles that its roles do.
$metarole->does_role($role)
Given a role name or Moose::Meta::Role object, returns true if this
role does the given role.
$metarole->add_role($role)
Given a Moose::Meta::Role object, this adds the role to the list of
roles that the role does.
$metarole->get_excluded_roles_list
Returns a list of role names which this role excludes.
$metarole->excludes_role($role_name)
Given a role name, returns true if this role excludes the named
role.
$metarole->add_excluded_roles(@role_names)
Given one or more role names, adds those roles to the list of
excluded roles.
Methods
The methods for dealing with a role's methods are all identical in API
and behavior to the same methods in Class::MOP::Class.
$metarole->method_metaclass
Returns the method metaclass name for the role. This defaults to
Moose::Meta::Role::Method.
$metarole->get_method($name)
$metarole->has_method($name)
$metarole->add_method( $name, $body )
$metarole->get_method_list
$metarole->find_method_by_name($name)
These methods are all identical to the methods of the same name in
Class::MOP::Package
Attributes
As with methods, the methods for dealing with a role's attribute are
all identical in API and behavior to the same methods in
Class::MOP::Class.
However, attributes stored in this class are not stored as objects.
Rather, the attribute definition is stored as a hash reference. When a
role is composed into a class, this hash reference is passed directly
to the metaclass's "add_attribute" method.
This is quite likely to change in the future.
$metarole->get_attribute($attribute_name)
$metarole->has_attribute($attribute_name)
$metarole->get_attribute_list
$metarole->add_attribute($name, %options)
$metarole->remove_attribute($attribute_name)
Overload introspection and creation
The methods for dealing with a role's overloads are all identical in
API and behavior to the same methods in Class::MOP::Class. Note that
these are not particularly useful (yet), because overloads do not
participate in role composition.
$metarole->is_overloaded
$metarole->get_overloaded_operator($op)
$metarole->has_overloaded_operator($op)
$metarole->get_overload_list
$metarole->get_all_overloaded_operators
$metarole->add_overloaded_operator($op, $impl)
$metarole->remove_overloaded_operator($op)
Required methods
$metarole->get_required_method_list
Returns the list of methods required by the role.
$metarole->requires_method($name)
Returns true if the role requires the named method.
$metarole->add_required_methods(@names)
Adds the named methods to the role's list of required methods.
$metarole->remove_required_methods(@names)
Removes the named methods from the role's list of required methods.
$metarole->add_conflicting_method(%params)
Instantiate the parameters as a
Moose::Meta::Role::Method::Conflicting object, then add it to the
required method list.
Method modifiers
These methods act like their counterparts in Class::MOP::Class and
Moose::Meta::Class.
However, method modifiers are simply stored internally, and are not
applied until the role itself is applied to a class.
$metarole->add_after_method_modifier($method_name, $method)
$metarole->add_around_method_modifier($method_name, $method)
$metarole->add_before_method_modifier($method_name, $method)
$metarole->add_override_method_modifier($method_name, $method)
These methods all add an appropriate modifier to the internal list
of modifiers.
$metarole->has_after_method_modifiers
$metarole->has_around_method_modifiers
$metarole->has_before_method_modifiers
$metarole->has_override_method_modifier
Return true if the role has any modifiers of the given type.
$metarole->get_after_method_modifiers($method_name)
$metarole->get_around_method_modifiers($method_name)
$metarole->get_before_method_modifiers($method_name)
Given a method name, returns a list of the appropriate modifiers
for that method.
$metarole->get_override_method_modifier($method_name)
Given a method name, returns the override method modifier for that
method, if it has one.
Introspection
Moose::Meta::Role->meta
This will return a Class::MOP::Class instance for this class.
BUGS
See "BUGS" in Moose for details on reporting bugs.
AUTHOR
Moose is maintained by the Moose Cabal, along with the help of many
contributors. See "CABAL" in Moose and "CONTRIBUTORS" in Moose for
details.
COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Infinity Interactive, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
perl v5.16.2 2012-09-19 Moose::Meta::Role(3)