---
name: "Bread::Board::Service::WithParameters"
section: "3pm"
platform: "linux"
package: "libbread-board-perl"
version: "0.37-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Bread::Board::Service::WithParameters"
---

# Bread::Board::Service::WithParameters(3pm)

Services with parameters

## NAME

Bread::Board::Service::WithParameters - Services with parameters

## VERSION

version 0.37

## 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) 2019, 2017, 2016, 2015, 2014, 2013, 2011, 2009 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.
