Skip to main content

RuleEvaluatorRegistry

Registers and resolves role rule evaluator drivers used by role_rules.driver.

Namespace

JobMetric\Rolix\Support\RuleEvaluatorRegistry

Facade

use JobMetric\Rolix\Facades\RuleEvaluatorRegistry;

Boot

Built-in evaluators are registered in afterRegisterPackage (time, weekday, user_status, ip_range, location, env, role_count, quota, custom_expression).

Methods

register()

public function register(string $class): self

$class must implement RuleEvaluatorContract. The registry resolves app($class) and indexes by $instance->name().

RuleEvaluatorRegistry::register(BusinessHoursEvaluator::class);

Throws: InvalidArgumentException when the class does not implement the contract.

unregister()

public function unregister(string $name): self

has() / get() / resolveClass()

RuleEvaluatorRegistry::has('time');
$driver = RuleEvaluatorRegistry::get('time'); // ?RuleEvaluatorContract
$class = RuleEvaluatorRegistry::resolveClass('time'); // ?class-string

get() / resolveClass() also accept an FQCN that implements the contract.

all() / values()

RuleEvaluatorRegistry::all();    // name => class-string
RuleEvaluatorRegistry::values(); // list of names

formFor()

public function formFor(string $nameOrClass): ?FormBuilder

Returns the evaluator's settings form builder when available (for admin UIs).

clear()

Clears the registry (tests).

Contract Reminder

Evaluators expose:

  • name(): string — stable driver key stored in DB
  • evaluate(array $rule, mixed $context): bool
  • form(): FormBuilder / fields() — UI metadata

See Rule Evaluators Overview.