NAME

MooseX::Params::Validate - an extension of Params::Validate using Moose's types

VERSION

version 0.19

SYNOPSIS

package Foo;
use Moose;
use MooseX::Params::Validate;

sub foo {
    my ( $self, %params ) = validated_hash(
        \@_,
        bar => { isa => 'Str', default => 'Moose' },
    );
    return "Hooray for $params{bar}!";
}

sub bar {
    my $self = shift;
    my ( $foo, $baz, $gorch ) = validated_list(
        \@_,
        foo   => { isa => 'Foo' },
        baz   => { isa => 'ArrayRef | HashRef', optional => 1 },
        gorch => { isa => 'ArrayRef[Int]', optional => 1 }
    );
    [ $foo, $baz, $gorch ];
}

DESCRIPTION

This module fills a gap in Moose by adding method parameter validation to Moose. This is just one of many developing options, it should not be considered the "official" one by any means though.

You might also want to explore MooseX::Method::Signatures and MooseX::Declare.

CAVEATS

It is not possible to introspect the method parameter specs; they are created as needed when the method is called and cached for subsequent calls.

EXPORTS

ALLOWING EXTRA PARAMETERS

By default, any parameters not mentioned in the parameter spec cause this module to throw an error. However, you can have this module simply ignore them by setting MX_PARAMS_VALIDATE_ALLOW_EXTRA to a true value when calling a validation subroutine.

When calling validated_hash or pos_validated_list the extra parameters are simply returned in the hash or list as appropriate. However, when you call validated_list the extra parameters will not be returned at all. You can get them by looking at the original value of @_.

EXPORTS

By default, this module exports the validated_hash, validated_list, and pos_validated_list.

If you would prefer to import the now deprecated functions validate and validatep instead, you can use the :deprecated tag to import them.

IMPORTANT NOTE ON CACHING

When a validation subroutine is called the first time, the parameter spec is prepared and cached to avoid unnecessary regeneration. It uses the fully qualified name of the subroutine (package + subname) as the cache key. In 99.999% of the use cases for this module, that will be the right thing to do.

However, I have (ab)used this module occasionally to handle dynamic sets of parameters. In this special use case you can do a couple things to better control the caching behavior.

MAINTAINER

Dave Rolsky autarch@urth.org

BUGS

Please submit bugs to the CPAN RT system at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=moosex-params-validate or via email at bug-moosex-params-validate@rt.cpan.org.

AUTHORS

CONTRIBUTORS

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 - 2014 by Stevan Little stevan.little@iinteractive.com.

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