Symfony Expression Language
The Symfony Expression Language provides an engine that can compile and evaluate expressions. An expression is one-line code statement that returns a value (often Booleans). The language syntax is based on the expression syntax of Twig (Epression Syntax). It allows administrators to customize the API behaviour by providing their own expressions in bundle configuration.
For further information, see the Symfony Expression Language documentation.
The Relay API Gateway currently uses configurable expressions for Access Control, where administrators can grant or deny access to API users by customizing conditional expressions (Access Control Policies).
The Symfony Expression Language can be extended by adding custom functions. To facilitate writing expressions,
the Relay API Gateway offers the following functions, which can be used in all expressions. Note that all additional
functions are prefixed with relay.
PHP Array Functions
relay.countrelay.emptyrelay.imploderelay.exploderelay.array_key_exists
PHP Numeric Functions
relay.ceilrelay.floorrelay.roundrelay.maxrelay.min
PHP String Functions
relay.str_starts_withrelay.str_ends_withrelay.substrrelay.strposrelay.strlenrelay.preg_matchrelay.sprintfrelay.vsprintf
Custom functions
relay.ternaryOperator(bool $condition, $valueIfTrue, $valueIfFalse)
Implements the ternary operator, which is not available in the relay's current Symfony version:
$condition ? $valueIfTrue : $valueIfFalse
relay.nullCoalescingOperator($value, $valueIfNull)
Implements the null coalescing operator, which is not available in the relay's current Symfony version:
$value ?? $valueIfNull
relay.isNullOrEmptyArray(?array $array): bool
Returns true, if $array is equal to null or has zero elements, false otherwise
relay.isNullOrEmptyString(?string $string): bool
Returns true, if $string is equal to null or '' (empty string), false otherwise
relay.map(array $array, string $expression): array
Applies the Symfony expression $expression to every array element in $array,
passing it the element's key as key and the element's value as value parameter.
For example:
$array = [0, 1, 2, 3];
var_dump(relay.map($array, "value + 1")); // [1, 2, 3, 4]
relay.filter(array $array, string $expression, bool $preserveKeys = false): array
Calls the Symfony expression $expression for every array element in $array, passing it the element's key
as key and the element's value as value variable. If and only if the expression evaluates to true for
an array element, the element is added to the result array.
If $preserveKeys is true, the original array keys are preserved.
For example:
$array = [0, 1, 2, 3];
var_dump(relay.filter($array, "value % 2 == 0")); // [0, 2]
relay.regexFormat(string $pattern, string $subject, string $formatString, string $default = null): ?string
Performs a regular expression match using the regular expression$pattern and the input string $subject
(see PHP preg_match function) and returns a formatted string using$formatString and the list of matches
captured during the regular expression search, i.e. the $matches parameter of preg_match
(see PHP vsprintf function).
If $subject does not match $pattern, $default is returned.