MooseX::Traits::PluggaUser3Contributed Perl DocumeMooseX::Traits::Pluggable(3)NAMEMooseX::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
<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
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-Traits-Pluggable>
· AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/MooseX-Traits-Pluggable
<http://annocpan.org/dist/MooseX-Traits-Pluggable>
· CPAN Ratings
http://cpanratings.perl.org/d/MooseX-Traits-Pluggable
<http://cpanratings.perl.org/d/MooseX-Traits-Pluggable>
· Search CPAN
http://search.cpan.org/dist/MooseX-Traits-Pluggable/
<http://search.cpan.org/dist/MooseX-Traits-Pluggable/>
AUTHOR
Rafael Kitover "<rkitover@cpan.org>"
CONTRIBUTORS
Tomas Doran, "<bobtfish@bobtfish.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.
perl v5.14.1 2010-07-25 MooseX::Traits::Pluggable(3)