CatalystX::Component::Traits.3pm

Langue: en

Autres versions - même langue

Version: 2010-08-26 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

CatalystX::Component::Traits - Automatic Trait Loading and Resolution for Catalyst Components

VERSION

Version 0.16

SYNOPSIS

     package Catalyst::Model::SomeModel;
     with 'CatalystX::Component::Traits';
 
     package MyApp::Model::MyModel;
     use parent 'Catalyst::Model::SomeModel';
 
     package MyApp;
 
     __PACKAGE__->config('Model::MyModel' => {
         traits => ['SearchedForTrait', '+Fully::Qualified::Trait']
     });
 
 

DESCRIPTION

Adds a ``COMPONENT'' in Catalyst::Component method to your Catalyst component base class that reads the optional "traits" parameter from app and component config and instantiates the component subclass with those traits using ``new_with_traits'' in MooseX::Traits from MooseX::Traits::Pluggable.

TRAIT SEARCH

Trait names qualified with a "+" are taken to be full package names.

Unqualified names are searched for, using the algorithm described below.

EXAMPLE

Suppose your inheritance hierarchy is:
     MyApp::Model::MyModel
     Catalyst::Model::CatModel
     Catalyst::Model
     Catalyst::Component
     Moose::Object
 
 

The configuration is:

     traits => ['Foo']
 
 

The package search order for "Foo" will be:

     MyApp::TraitFor::Model::CatModel::Foo
     Catalyst::TraitFor::Model::CatModel::Foo
 
 

A MORE PATHOLOGICAL EXAMPLE

For:
     My::App::Controller::AController
     CatalystX::Something::ControllerBase::SomeController
     Catalyst::Controller
     Catalyst::Model
     Catalyst::Component
     Moose::Object
 
 

With:

     traits => ['Foo']
 
 

Search order for "Foo" will be:

     My::App::TraitFor::Controller::SomeController::Foo
     CatalystX::Something::TraitFor::Controller::SomeController::Foo
 
 

The "Base" after (M|V|C) is automatically removed.

TRAIT MERGING

Traits from component class config and app config are automatically merged if you set the "_trait_merge" attribute default, e.g.:
     has '+_trait_merge' => (default => 1);
 
 

You can remove component class config traits by prefixing their names with a "-" in the app config traits.

For example:

     package Catalyst::Model::Foo;
     has '+_trait_merge' => (default => 1);
     __PACKAGE__->config->{traits} = [qw/Foo Bar/];
 
     package MyApp;
     __PACKAGE__->config->{'Model::Foo'}{traits} = [qw/-Foo Baz/];
 
 

Will load the traits:

     Bar Baz
 
 

AUTHOR

Rafael Kitover, "<rkitover@cpan.org>"

CONTRIBUTORS

Tomas Doran, "<bobtfish@bobtfish.net>"

BUGS

Please report any bugs or feature requests to "bug-catalystx-component-traits at rt.cpan.org", or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CatalystX-Component-Traits <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CatalystX-Component-Traits>. 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=CatalystX-Component-Traits <http://rt.cpan.org/NoAuth/Bugs.html?Dist=CatalystX-Component-Traits>

*
AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/CatalystX-Component-Traits <http://annocpan.org/dist/CatalystX-Component-Traits>

*
CPAN Ratings

http://cpanratings.perl.org/d/CatalystX-Component-Traits <http://cpanratings.perl.org/d/CatalystX-Component-Traits>

*
Search CPAN

http://search.cpan.org/dist/CatalystX-Component-Traits/ <http://search.cpan.org/dist/CatalystX-Component-Traits/>

ACKNOWLEDGEMENTS

Matt S. Trout and Tomas Doran helped me with the current design. Copyright (c) 2009, Rafael Kitover

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