| | <?php |
| | |
| | |
| | |
| | |
| | |
| |
|
| | namespace WpOrg\Requests; |
| |
|
| | use WpOrg\Requests\Exception\InvalidArgument; |
| | use WpOrg\Requests\HookManager; |
| | use WpOrg\Requests\Utility\InputValidator; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | class Hooks implements HookManager { |
| | |
| | |
| | |
| | |
| | |
| | protected $hooks = []; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function register($hook, $callback, $priority = 0) { |
| | if (is_string($hook) === false) { |
| | throw InvalidArgument::create(1, '$hook', 'string', gettype($hook)); |
| | } |
| |
|
| | if (is_callable($callback) === false) { |
| | throw InvalidArgument::create(2, '$callback', 'callable', gettype($callback)); |
| | } |
| |
|
| | if (InputValidator::is_numeric_array_key($priority) === false) { |
| | throw InvalidArgument::create(3, '$priority', 'integer', gettype($priority)); |
| | } |
| |
|
| | if (!isset($this->hooks[$hook])) { |
| | $this->hooks[$hook] = [ |
| | $priority => [], |
| | ]; |
| | } elseif (!isset($this->hooks[$hook][$priority])) { |
| | $this->hooks[$hook][$priority] = []; |
| | } |
| |
|
| | $this->hooks[$hook][$priority][] = $callback; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function dispatch($hook, $parameters = []) { |
| | if (is_string($hook) === false) { |
| | throw InvalidArgument::create(1, '$hook', 'string', gettype($hook)); |
| | } |
| |
|
| | |
| | if (is_array($parameters) === false) { |
| | throw InvalidArgument::create(2, '$parameters', 'array', gettype($parameters)); |
| | } |
| |
|
| | if (empty($this->hooks[$hook])) { |
| | return false; |
| | } |
| |
|
| | if (!empty($parameters)) { |
| | |
| | $parameters = array_values($parameters); |
| | } |
| |
|
| | ksort($this->hooks[$hook]); |
| |
|
| | foreach ($this->hooks[$hook] as $priority => $hooked) { |
| | foreach ($hooked as $callback) { |
| | $callback(...$parameters); |
| | } |
| | } |
| |
|
| | return true; |
| | } |
| |
|
| | public function __wakeup() { |
| | throw new \LogicException( __CLASS__ . ' should never be unserialized' ); |
| | } |
| | } |
| |
|