NAME
Bread::Board::Service::WithParameters
VERSION
version 0.33
DESCRIPTION
This is a sub-role of Bread::Board::Service, for parameterized services. These are services that will instantiate different values depending on parameters that are passed to the get
method. You can pass those parameters via the service_params
attribute of Bread::Board::Dependency
, or via the inflate
method of Bread::Board::Service::Deferred::Thunk
.
ATTRIBUTES
parameters
Read-only hashref, will be passed as-is to MooseX::Params::Validate
's validated_hash
, so you can use things like optional
and default
in addition to type constraints:
service something => (
class => 'Thing',
parameters => {
type => { isa => 'Str', default => 'text' },
},
);
This attribute uses coercions on Bread::Board::Service::Parameters
so that you can also say:
service something => (
class => 'Thing',
parameters => ['type'],
);
and it will be equivalent to:
service something => (
class => 'Thing',
parameters => {
type => { optional => 0 },
},
);
METHODS
has_parameters
Predicate for the "parameters" attribute.
has_parameter_defaults
Returns true if any of the "parameters" have a default
value.
has_required_parameters
Returns true if any of the "parameters" does not have optional
set to true.
check_parameters
my %parameters = $service->check_parameters(name1=>$value1,name2=>$value2);
my %parameters = $service->check_parameters({name1=>$value1,name2=>$value2});
If any "parameters" are defined, this function validates its arguments against the parameters' definitions (using MooseX::Params::Validate). It will die if the validation fails, or return the validated parameters (including default value) if it succeeds.
get
Before the get
method, arguments to get
are passed through "check_parameters" and added to the params
hashref. After the get
method, those keys/values will be removed. In practice, this makes all parameters available to the actual get
method body.
AUTHOR
Stevan Little <stevan@iinteractive.com>
BUGS
Please report any bugs or feature requests on the bugtracker website https://github.com/stevan/BreadBoard/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
COPYRIGHT AND LICENSE
This software is copyright (c) 2015 by Infinity Interactive.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.