Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Chained accessors in Moose

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 t
Octocat-spinner-32 .gitignore
Octocat-spinner-32 MANIFEST
Octocat-spinner-32 Makefile.PL
Octocat-spinner-32 README
README
MooseX::ChainedAccessors

Chained accessors on write operations for Moose.

INSTALLATION

    To install this module, run the following commands:
    
    perl ./Makefile.PL
    make test
    make install


USAGE

    package MyClass;
    use Moose;
    
    has 'chained_attr' =>
    (
        traits => ['Chained'],
        is     => 'rw',
        isa    => 'Str',        
    );
    
    sub my_method
    {
        my $self = shift;
        print 'hello, ' . $self->chained_attr;
    }
    
    1;    
    
    MyClass->new->chained_attr('world')->my_method(); # hello, world!


Chained accessors also work with explicit 'reader/writer' accessors. 

    package MyClass;
    use Moose;
    
    has 'attr' => 
    (
        traits => ['Chained'],
        is     => 'rw',
        isa    => 'Str',
        reader => 'get_attr',
        writer => 'set_sttr',
    );
    
    sub my_method
    {
        my $self = shift;
        print $self->get_attr;
    }
    
    1l
    
    MyClass->new->set_attr('hello, world')->my_method(); # hello, world

Hopefully it's obvious why read operations can't be chained. 
        

DOCUMENTATION

See http://search.cpan.org/dist/Moose/lib/Moose/Cookbook/Meta/Recipe3.pod for documentation on using traits.
And also http://www.dmclaughlin.com/2009/05/15/chained-accessors-in-moose/ for the release post.
Something went wrong with that request. Please try again.