---
name: "Catalyst::Component::InstancePerContext"
section: "3pm"
platform: "linux"
package: "libcatalyst-component-instancepercontext-perl"
version: "0.001001-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catalyst::Component::InstancePerContext"
---

# Catalyst::Component::InstancePerContext(3pm)

Return a new instance a component on each request

## NAME

Catalyst::Component::InstancePerContext - Return a new instance a component on each request

## SYNOPSYS

```
    package MyComponent;
    use Moose;
    with 'Catalyst::Component::InstancePerContext';
    sub build_per_context_instance{
        my ($self, $c) = @_;
        # ... do your thing here
        return SomeModule->new(%args);
    }
```

## REQUIRED METHODS

Your consuming class **must** implement the following method.

### build\_per\_context\_instance

The value returned by this call is what you will receive when you call `$c`-\>component('YourComponent').

## PROVIDED METHODS

This role will add the following method to your consuming class.

### ACCEPT\_CONTEXT

If the context is not blessed, it will simple pass through the value of `"build_per_context_instance"`. If context is blessed it will look in the `"stash"` for an instance of the requested component and return that or, if the value is not found, the value returned by `"build_per_context_instance"` will be stored and return.

The idea behind this behavior is that a component can be built on a per-request basis, as the name of this module implies.

## SEE ALSO

Moose, Moose::Role, Catalyst::Component

## AUTHOR

Guillermo Roditi (groditi) \<groditi@cpan.org\>

## LICENSE

You may distribute this code under the same terms as Perl itself.
