fenom/docs/en/operators.md

3.6 KiB

Operators

Arithmetic operators

  • $a + $b - addition
  • $a - $b - subtraction
  • $a * $b - multiplication
  • $a / $b - division
  • $a % $b - modulus
{$a + $b * $c/$d - $e*5 + 1e3}

Logical operators

  • $a || $b - or
  • $a && $b - and
  • !$a - not, unary operator
  • $a and $b - and
  • $a or $b - or
  • $a xor $b - xor
{if $b && $c} ... {/if}

Comparison operators

  • $a < $b - less than
  • $a > $b - greater than
  • $a <= $b - less than or equal to
  • $a >= $b - greater than or equal to
  • $a == $b - equal
  • $a === $b - identical
  • $a !== $b - not identical
  • $a != $b - not equal
  • $a <> $b - not equal
{if $b >= 5} ... {/if}

Bitwise operators

  • $a | $b - or
  • $a & $b - and
  • $a ^ $b - xor
  • ~$a - not, unary operator
  • $a << $b - shift left
  • $a >> $b - shift right
{if $a & 1} {var $b = 4 | $flags} {/if}

Assignment operators

  • $a = $b - assignment
  • $a += $b - assignment with addition
  • $a -= $b - assignment with subtraction
  • $a *= $b - assignment with multiplication
  • $a /= $b - assignment with division
  • $a %= $b - assignment with modulus
  • $a &= $b - assignment with bitwise And
  • $a |= $b - assignment with bitwise or
  • $a ^= $b - assignment with bitwise xor
  • $a <<= $b - assignment with left shift
  • $a >>= $b - assignment with right shift
{var $b |= $flags}

Incrementing/Decrementing operators

  • ++$a - increment the variable and use it
  • $a++ - use the variable and increment it
  • --$a - decrement the variable and use it
  • $a-- - use the variable and decrement it

String operators

  • $a ~ $b - return concatenation of variables $a and $b
  • $a ~~ $b - return concatenation of variables $a and $b separated by a space
  • $a ~= $b - assignment with concatenation

Ternary operators

  • $a ? $b : $c - returns $b if $a is not empty, and $c otherwise
  • $a ! $b : $c - returns $b if $a is set, and $c otherwise
  • $a ?: $c - returns $a if $a is not empty, and $c otherwise
  • $a !: $c - returns $a if $a is set, and $c otherwise
{var $a = true}
{$a ? 5 : 10} {* outputs 5 *}
{var $a = false}
{$a ? 5 : 10} {* outputs 10 *}

Check operators

  • $a? - returns TRUE if $a is not empty
  • $a! - returns TRUE if $a is set
{if $a?} {* instead of {if !empty($a)} *}
{if $a!} {* instead of {if isset($a)} *}
{$a?:"some text"} {* instead of {if empty($a) ? "some text" : $a} *}
{$a!:"some text"} {* instead of {if isset($a) ? $a : "some text"} *}

Test operator

Tests can be negated by using the is not operator.

  • $a is $b - $a identical $b
  • $a is integer - test variable type. Type may be int/integer, bool/boolean, float/double/decimal, array, object, scalar, string, callback/callable, number/numeric.
  • $a is iterable - test variable for iteration.
  • $a is template - variable $a contain existing template name.
  • $a is empty - checks if a variable is empty.
  • $a is set - checks if a variable is set.
  • $a is even - variable $a is even.
  • $a is odd - variable $a is odd.
  • $a is MyClass or $a is \MyClass - variable $a instance of MyClass class

Containment operator

Tests can be negated by using the not in operator.

  • $a in $b - variable $a contains in $b, $b may be string, plain or assoc array.
  • $a in list $b - variable $a contains in array $b as value
  • $a in keys $b - array $b contain key $a
  • $a in string $b - variable $a contains in string $b as substring
{'df' in 'abcdefg'}
{5 in [1, 5, 25, 125]}
{99 in keys [1, 5, 25, 99 => 125]}