Functions reference
Functions are called by name: name(arg, ...). Their result can be
chained onto like any value. You can add your
own with registerFunction().
Utility functions
uuid()
Returns a new random UUID string.
uuid() → "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
env(key, default = null)
Reads an environment variable — only if key is listed in
env_whitelist. Any other key
throws EvaluatorException. With an empty
whitelist (the default), env() is disabled entirely.
env("APP_ENV") → "production" (if whitelisted)
env("MISSING", "fallback") → "fallback"
random(min = 0, max = PHP_INT_MAX)
A cryptographically secure random integer in [min, max].
random(1, 6) → 4
range(start, end, step = 1)
An array of numbers from start to end.
range(1, 5) → [1, 2, 3, 4, 5]
range(0, 10, 5) → [0, 5, 10]
coalesce(...values)
The first argument that is not null, or null if all are.
coalesce(trigger.nickname, trigger.name, "friend")
Type functions
Casts and guards that work on any value. Each takes the value as its
argument: isset(trigger.name), not trigger.name.isset().
| Function | Result |
|---|---|
string(value) | Cast to string |
int(value) | Cast to integer |
float(value) | Cast to float |
bool(value) | Cast to boolean |
json(value) | JSON-encode (false if encoding fails) |
decode(value) | JSON-decode a string to an array |
isset(value) | true if the value is not null |
empty(value) | true if the value is empty ("", 0, [], null, false) |
not(value) | Logical negation |
if(condition, then = true, else = false) | then if condition is truthy, else else |
if(trigger.order.total > 100, "priority", "standard")
string(trigger.order.id)
json(trigger.order.lines)
if()evaluates boththenandelsebefore it runs. When a branch must stay lazy (e.g. it would error unless the condition holds), use the ternary operatorcond ? a : binstead.
Date functions
now(), today(), and date() return a chainable date object when
called with no format, or a formatted string when passed a format. See
Working with dates
and the date methods.
now(format = null)
The current date and time.
now().addDays(5).format("Y-m-d")
now("Y-m-d H:i") → "2026-08-31 14:03"
today(format = null)
The current date at midnight (start of day).
today().addWeeks(1)
date(value, format = null)
Parses value as a date. An unparseable value throws
EvaluatorException.
date("2026-01-01").addMonths(3).format("Y-m-d") → "2026-04-01"
date(trigger.order.createdAt).isBefore(now())
time(value, format = null)
An alias of date() — identical behaviour.
timestamp()
The current Unix timestamp as an integer.
Math functions
| Function | Result |
|---|---|
min(...values) | Smallest — flattens array arguments |
max(...values) | Largest — flattens array arguments |
round(value, places = 0) | Rounded value |
floor(value) | Rounded down to an integer |
ceil(value) | Rounded up to an integer |
abs(value) | Absolute value |
pow(base, exp) | base ** exp |
sqrt(value) | Square root — throws EvaluatorException for a negative value |
min(trigger.a, trigger.b, 10)
max(trigger.scores) → largest element of the array
round(trigger.total, 2)
Context functions
set(key, value) / get(key)
set() writes value into the shared context under key and returns it;
get() reads it back. Most useful inside run(),
but also valid within a single resolve() / evaluate() call.
set("tax", trigger.subtotal * 0.15)
get("tax")
Both are always available and always appear in
availableFunctions().