sourCEntral - mobile manpages

pdf

MooseX::Traits::Pluggable

NAME

MooseX::Traits::Pluggable − trait loading and resolution for Moose

DESCRIPTION

See MooseX::Traits for usage information.

Use "new_with_traits" to construct an object with a list of traits and "apply_traits" to apply traits to an instance.

Adds support for class precedence search for traits and some extra attributes, described below.

TRAIT SEARCH

If the value of "_trait_namespace" in MooseX::Traits starts with a "+" the namespace will be considered relative to the "class_precedence_list" (ie. @ISA) of the original class.

Example:

  package Class1
  use Moose;
  package Class1::Trait::Foo;
  use Moose::Role;
  has 'bar' => (
      is       => 'ro',
      isa      => 'Str',
      required => 1,
  );
  package Class2;
  use parent 'Class1';
  with 'MooseX::Traits';
  has '+_trait_namespace' => (default => '+Trait');
  package Class2::Trait::Bar;
  use Moose::Role;
  has 'baz' => (
      is       => 'ro',
      isa      => 'Str',
      required => 1,
  );
  package main;
  my $instance = Class2−>new_with_traits(
      traits => ['Foo', 'Bar'],
      bar => 'baz',
      baz => 'quux',
  );
  $instance−>does('Class1::Trait::Foo'); # true
  $instance−>does('Class2::Trait::Bar'); # true

NAMESPACE ARRAYS

You can search multiple namespaces for traits, for example:

  has '+_trait_namespace' => (
      default => sub { [qw/+Trait +Role ExtraNS::Trait/] }
  );

Will search in the "class_precedence_list" for "::Trait::TheTrait" and "::Role::TheTrait" and then for "ExtraNS::Trait::TheTrait".

EXTRA ATTRIBUTES

_original_class_name
When traits are applied to your class or instance, you get an anonymous class back whose name will be not the same as your original class. So "ref $self" will not be "Class", but "$self−>_original_class_name" will be.

_traits
List of the (unresolved) traits applied to the instance.

_resolved_traits
List of traits applied to the instance resolved to full package names.

SEE ALSO

MooseX::Traits, MooseX::Object::Pluggable

BUGS

Please report any bugs or feature requests to "bug−moosex−traits−pluggable at rt.cpan.org", or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooseX−Traits−Pluggable>. I will be notified, and then you’ll automatically be notified of progress on your bug as I make changes.

SUPPORT

More information at:

RT: CPAN ’s request tracker

<http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX−Traits−Pluggable>

AnnoCPAN: Annotated CPAN documentation

<http://annocpan.org/dist/MooseX−Traits−Pluggable>

CPAN Ratings

<http://cpanratings.perl.org/d/MooseX−Traits−Pluggable>

Search CPAN

<http://search.cpan.org/dist/MooseX−Traits−Pluggable/>

AUTHOR

Rafael Kitover "<rkitover AT cpan DOT org>"

CONTRIBUTORS

Tomas Doran, "<bobtfish AT bobtfish DOT net>"

COPYRIGHT & LICENSE

Copyright (c) 2009 − 2010 by the aforementioned " AUTHOR " and " CONTRIBUTORS ".

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

pdf