GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  ROLE::TINY (3)

.ds Aq ’

NAME

Role::Tiny - Roles. Like a nouvelle cuisine portion size slice of Moose.

CONTENTS

SYNOPSIS



 package Some::Role;

 use Role::Tiny;

 sub foo { ... }

 sub bar { ... }

 around baz => sub { ... }

 1;



else where



 package Some::Class;

 use Role::Tiny::With;

 # bar gets imported, but not foo
 with Some::Role;

 sub foo { ... }

 # baz is wrapped in the around modifier by Class::Method::Modifiers
 sub baz { ... }

 1;



If you wanted attributes as well, look at Moo::Role.

DESCRIPTION

Role::Tiny is a minimalist role composition tool.

ROLE COMPOSITION

Role composition can be thought of as much more clever and meaningful multiple inheritance. The basics of this implementation of roles is:
o If a method is already defined on a class, that method will not be composed in from the role.
o If a method that the role requires to be implemented is not implemented, role application will fail loudly.
Unlike Class::C3, where the <B>lastB> class inherited from wins, role composition is the other way around, where the class wins. If multiple roles are applied in a single call (single with statement), then if any of their provided methods clash, an exception is raised unless the class provides a method since this conflict indicates a potential problem.

IMPORTED SUBROUTINES

    requires



 requires qw(foo bar);



Declares a list of methods that must be defined to compose role.

    with



 with Some::Role1;

 with Some::Role1, Some::Role2;



Composes another role into the current role (or class via Role::Tiny::With).

If you have conflicts and want to resolve them in favour of Some::Role1 you can instead write:



 with Some::Role1;
 with Some::Role2;



If you have conflicts and want to resolve different conflicts in favour of different roles, please refactor your codebase.

    before



 before foo => sub { ... };



See before method(s) => sub { ... } in Class::Method::Modifiers for full documentation.

Note that since you are not required to use method modifiers, Class::Method::Modifiers is lazily loaded and we do not declare it as a dependency. If your Role::Tiny role uses modifiers you must depend on both Class::Method::Modifiers and Role::Tiny.

    around



 around foo => sub { ... };



See around method(s) => sub { ... } in Class::Method::Modifiers for full documentation.

Note that since you are not required to use method modifiers, Class::Method::Modifiers is lazily loaded and we do not declare it as a dependency. If your Role::Tiny role uses modifiers you must depend on both Class::Method::Modifiers and Role::Tiny.

    after



 after foo => sub { ... };



See after method(s) => sub { ... } in Class::Method::Modifiers for full documentation.

Note that since you are not required to use method modifiers, Class::Method::Modifiers is lazily loaded and we do not declare it as a dependency. If your Role::Tiny role uses modifiers you must depend on both Class::Method::Modifiers and Role::Tiny.

    Strict and Warnings

In addition to importing subroutines, using Role::Tiny applies strict and warnings to the caller.

SUBROUTINES

    does_role



 if (Role::Tiny::does_role($foo, Some::Role)) {
   ...
 }



Returns true if class has been composed with role.

This subroutine is also installed as ->does on any class a Role::Tiny is composed into unless that class already has an ->does method, so



  if ($foo->does(Some::Role)) {
    ...
  }



will work for classes but to test a role, one must use ::does_role directly.

Additionally, Role::Tiny will override the standard Perl DOES method for your class. However, if any class in your class’ inheritance hierarchy provides DOES, then Role::Tiny will not override it.

METHODS

    apply_roles_to_package



 Role::Tiny->apply_roles_to_package(
   Some::Package, Some::Role, Some::Other::Role
 );



Composes role with package. See also Role::Tiny::With.

    apply_roles_to_object



 Role::Tiny->apply_roles_to_object($foo, qw(Some::Role1 Some::Role2));



Composes roles in order into object directly. Object is reblessed into the resulting class.

    create_class_with_roles



 Role::Tiny->create_class_with_roles(Some::Base, qw(Some::Role1 Some::Role2));



Creates a new class based on base, with the roles composed into it in order. New class is returned.

    is_role



 Role::Tiny->is_role(Some::Role1)



Returns true if the given package is a role.

CAVEATS

o On perl 5.8.8 and earlier, applying a role to an object won’t apply any overloads from the role to all copies of the object.

SEE ALSO

Role::Tiny is the attribute-less subset of Moo::Role; Moo::Role is a meta-protocol-less subset of the king of role systems, Moose::Role.

Ovid’s Role::Basic provides roles with a similar scope, but without method modifiers, and having some extra usage restrictions.

AUTHOR

mst - Matt S. Trout (cpan:MSTROUT) <mst@shadowcat.co.uk>

CONTRIBUTORS

dg - David Leadbeater (cpan:DGL) <dgl@dgl.cx>

frew - Arthur Axel fREW Schmidt (cpan:FREW) <frioux@gmail.com>

hobbs - Andrew Rodland (cpan:ARODLAND) <arodland@cpan.org>

jnap - John Napiorkowski (cpan:JJNAPIORK) <jjn1056@yahoo.com>

ribasushi - Peter Rabbitson (cpan:RIBASUSHI) <ribasushi@cpan.org>

chip - Chip Salzenberg (cpan:CHIPS) <chip@pobox.com>

ajgb - Alex J. G. BurzyXski (cpan:AJGB) <ajgb@cpan.org>

doy - Jesse Luehrs (cpan:DOY) <doy at tozt dot net>

perigrin - Chris Prather (cpan:PERIGRIN) <chris@prather.org>

Mithaldu - Christian Walde (cpan:MITHALDU) <walde.christian@googlemail.com>

ilmari - Dagfinn Ilmari Mannsaaker (cpan:ILMARI) <ilmari@ilmari.org>

tobyink - Toby Inkster (cpan:TOBYINK) <tobyink@cpan.org>

haarg - Graham Knop (cpan:HAARG) <haarg@haarg.org>

COPYRIGHT

Copyright (c) 2010-2012 the Role::Tiny AUTHOR and CONTRIBUTORS as listed above.

LICENSE

This library is free software and may be distributed under the same terms as perl itself.
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 ROLE::TINY (3) 2015-04-24

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.