kawax/laravel-amazon-product-api

View on GitHub
src/Hookable.php

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
<?php

namespace Revolution\Amazon\ProductAdvertising;

trait Hookable
{
    protected array $hooks = [];

    /**
     * Add hook.
     */
    public function hook(string $name, callable $hook): void
    {
        $this->hooks[$name] = $hook;
    }

    public function hasHook(string $name): bool
    {
        return isset($this->hooks[$name]);
    }

    public function callHook(string $name, $request): mixed
    {
        if (! $this->hasHook($name)) {
            return $request;
        }

        $hook = $this->hooks[$name];

        return call_user_func($hook, $request);
    }
}