---
name: "Class::C3::Componentised::ApplyHooks"
section: "3pm"
platform: "linux"
package: "libclass-c3-componentised-perl"
version: "1.001002-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Class::C3::Componentised::ApplyHooks"
---

# Class::C3::Componentised::ApplyHooks(3pm)

Run methods before or after components are injected

## NAME

Class::C3::Componentised::ApplyHooks - Run methods before or after components are injected

## SYNOPSIS

```
 package MyComponent;
 our %statistics;
 use Class::C3::Componentised::ApplyHooks
   -before_apply => sub {
     my ($class, $component) = @_;
     push @{$statistics{$class}}, '-before_apply';
   },
   -after_apply  => sub {
     my ($class, $component) = @_;
     push @{$statistics{$class}}, '-after_apply';
   }, qw(BEFORE_APPLY AFTER_APPLY);
 BEFORE_APPLY { push @{$statistics{$class}}, 'BEFORE_APPLY' };
 AFTER_APPLY { push @{$statistics{$class}}, 'AFTER_APPLY' };
 AFTER_APPLY { use Devel::Dwarn; Dwarn %statistics };
 1;
```

## DESCRIPTION

This package allows a given component to run methods on the class that is being injected into before or after the component is injected.  Note from the "SYNOPSIS" that all `"Load Actions"` may be run more than once.

## IMPORT ACTION

Both import actions simply run a list of coderefs that will be passed the class that is being acted upon and the component that is being added to the class.

## IMPORT OPTIONS

### -before\_apply

Adds a before apply action for the current component without importing any subroutines into your namespace.

### -after\_apply

Adds an after apply action for the current component without importing any subroutines into your namespace.

## EXPORTED SUBROUTINES

### BEFORE\_APPLY

```
 BEFORE_APPLY { warn "about to apply $_[1] to class $_[0]"  };
```

Adds a before apply action for the current component.

### AFTER\_APPLY

```
 AFTER_APPLY { warn "just applied $_[1] to class $_[0]"  };
```

Adds an after apply action for the current component.
