folderweb/app/hooks.php

25 lines
668 B
PHP
Raw Normal View History

<?php
enum Hook: string {
case CONTEXT_READY = 'context_ready';
case PROCESS_CONTENT = 'process_content';
case TEMPLATE_VARS = 'template_vars';
}
class Hooks {
private static array $filters = [];
public static function add(Hook $hook, callable $callback): void {
self::$filters[$hook->value][] = $callback;
}
public static function apply(Hook $hook, mixed $value, mixed ...$args): mixed {
if (!isset(self::$filters[$hook->value])) return $value;
foreach (self::$filters[$hook->value] as $filter) {
$value = $filter($value, ...$args);
}
return $value;
}
}