Rechercher une page de manuel
MooseX::Traits::Pluggable.3pm
Langue: en
Version: 2009-08-27 (ubuntu - 24/10/10)
Section: 3 (Bibliothèques de fonctions)
Sommaire
NAME
MooseX::Traits::Pluggable - an extension to MooseX::TraitsDESCRIPTION
See MooseX::Traits for usage information.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.AUTHOR
Rafael Kitover "<rkitover@cpan.org>"Don't email these guys, they had nothing to do with this fork:
Jonathan Rockway "<jrockway@cpan.org>"
Stevan Little "<stevan.little@iinteractive.com>"
COPYRIGHT AND LICENSE
Copyright 2008 Infinity Interactive, Inc.<http://www.iinteractive.com>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre