@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
class RsvFormPriceCalculatorRegistry {
|
||||
/** @var array<string, callable(RsvFormElementDefinition, mixed): float> */
|
||||
private array $calculators = [];
|
||||
|
||||
public function register(string $type, callable $calculator): void {
|
||||
$this->calculators[$type] = $calculator;
|
||||
}
|
||||
|
||||
public function get(string $type): ?callable {
|
||||
return $this->calculators[$type] ?? null;
|
||||
}
|
||||
|
||||
/** Builds the registry and lets other modules contribute calculators. */
|
||||
public static function boot(): self {
|
||||
$registry = new self();
|
||||
do_action('rsv-register-price-calculator', $registry);
|
||||
return $registry;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user