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


MooseX-Traits-Pluggable documentation  | view source Contained in the MooseX-Traits-Pluggable distribution.

Index


NAME

Top

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

DESCRIPTION

Top

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

Top

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

Top

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

Top

_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

Top

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

BUGS

Top

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

Top

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

Top

Rafael Kitover <rkitover@cpan.org>

CONTRIBUTORS

Top

Tomas Doran, <bobtfish@bobtfish.net>

COPYRIGHT & LICENSE

Top


MooseX-Traits-Pluggable documentation  | view source Contained in the MooseX-Traits-Pluggable distribution.