Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
rfc:operator_functions [2017/09/09 00:15] – fix error ajf | rfc:operator_functions [2017/09/09 21:25] – fix partial application example ajf |
---|
<code php> | <code php> |
// Select only the positive numbers | // Select only the positive numbers |
$positiveSubset = array_filters($numbers, partialApply('>', 0)); | $positiveSubset = array_filters($numbers, partialApply('<', 0)); |
</code> | </code> |
| |
The table below lists the new functions that would be added to the root namespace (''\''). Each is named the same as its corresponding operator, including any aliases (for the sake of consistency). | The table below lists the new functions that would be added to the root namespace (''\''). Each is named the same as its corresponding operator, including any aliases (for the sake of consistency). |
| |
^ Function signature ^ Corresponding operation ^ Notes ^ | ^ Function signature ^ Corresponding operation ^ Notes ^ |
| <php>'+'($a[, $b])</php> | <php>+$a</php>, <php>$a + $b</php> | | | | <php>'+'($a[, $b])</php> | <php>+$a</php>, <php>$a + $b</php> | | |
| <php>'-'($a[, $b])</php> | <php>-$a</php>, <php>$a - $b</php> | | | | <php>'-'($a[, $b])</php> | <php>-$a</php>, <php>$a - $b</php> | | |
| <php>'*'($a, $b)</php> | <php>$a * $b</php> | | | | <php>'*'($a, $b)</php> | <php>$a * $b</php> | | |
| <php>'/'($a, $b)</php> | <php>$a / $b</php> | | | | <php>'/'($a, $b)</php> | <php>$a / $b</php> | | |
| <php>'%'($a, $b)</php> | <php>$a % $b</php> | | | | <php>'%'($a, $b)</php> | <php>$a % $b</php> | | |
| <php>'**'($a, $b)</php> | <php>$a ** $b</php> | | | | <php>'**'($a, $b)</php> | <php>$a ** $b</php> | | |
| <php>'&'($a, $b)</php> | <php>$a & $b</php> | | | | <php>'&'($a, $b)</php> | <php>$a & $b</php> | | |
| <php>'|'($a, $b)</php> | <php>$a | $b</php> | | | | <php>'|'($a, $b)</php> | <php>$a | $b</php> | | |
| <php>'^'($a, $b)</php> | <php>$a ^ $b</php> | | | | <php>'^'($a, $b)</php> | <php>$a ^ $b</php> | | |
| <php>'~'($a)</php> | <php>~$a</php> | | | | <php>'~'($a)</php> | <php>~$a</php> | | |
| <php>'<<'($a, $b)</php> | <php>$a << $b</php> | | | | <php>'<<'($a, $b)</php> | <php>$a << $b</php> | | |
| <php>'>>'($a, $b)</php> | <php>$a >> $b</php> | | | | <php>'>>'($a, $b)</php> | <php>$a >> $b</php> | | |
| <php>'=='($a, $b)</php> | <php>$a == $b</php> | | | | <php>'=='($a, $b)</php> | <php>$a == $b</php> | | |
| <php>'==='($a, $b)</php> | <php>$a === $b</php> | | | | <php>'==='($a, $b)</php> | <php>$a === $b</php> | | |
| <php>'!='($a, $b)</php> | <php>$a != $b</php> | | | | <php>'!='($a, $b)</php> | <php>$a != $b</php> | | |
| <php>'<>'($a, $b)</php> | <php>$a <> $b</php> | | | | <php>'<>'($a, $b)</php> | <php>$a <> $b</php> | | |
| <php>'!=='($a, $b)</php> | <php>$a !== $b</php> | | | | <php>'!=='($a, $b)</php> | <php>$a !== $b</php> | | |
| <php>'<'($a, $b)</php> | <php>$a < $b</php> | | | | <php>'<'($a, $b)</php> | <php>$a < $b</php> | | |
| <php>'>'($a, $b)</php> | <php>$a > $b</php> | | | | <php>'>'($a, $b)</php> | <php>$a > $b</php> | | |
| <php>'<='($a, $b)</php> | <php>$a <= $b</php> | | | | <php>'<='($a, $b)</php> | <php>$a <= $b</php> | | |
| <php>'>='($a, $b)</php> | <php>$a >= $b</php> | | | | <php>'>='($a, $b)</php> | <php>$a >= $b</php> | | |
| <php>'<=>'($a, $b)</php> | <php>$a <=> $b</php> | | | | <php>'<=>'($a, $b)</php> | <php>$a <=> $b</php> | | |
| <php>'&&'($a, $b)</php> | <php>$a && $b</php> | Can't short-circuit. | | | <php>'&&'($a, $b)</php> | <php>$a && $b</php> | Can't fully short-circuit. | |
| <php>'and'($a, $b)</php> | <php>$a and $b</php> | Can't short-circuit. | | | <php>'and'($a, $b)</php> | <php>$a and $b</php> | Can't fully short-circuit. | |
| <php>'||'($a, $b)</php> | <php>$a || $b</php> | Can't short-circuit. | | | <php>'||'($a, $b)</php> | <php>$a || $b</php> | Can't fully short-circuit. | |
| <php>'or'($a, $b)</php> | <php>$a or $b</php> | Can't short-circuit. | | | <php>'or'($a, $b)</php> | <php>$a or $b</php> | Can't fully short-circuit. | |
| <php>'xor'($a, $b)</php> | <php>$a xor $b</php> | | | | <php>'xor'($a, $b)</php> | <php>$a xor $b</php> | | |
| <php>'!'($a)</php> | <php>!$a</php> | | | | <php>'!'($a)</php> | <php>!$a</php> | | |
| <php>'.'($a, $b)</php> | <php>$a . $b</php> | | | | <php>'.'($a, $b)</php> | <php>$a . $b</php> | | |
| |
Since <php>pow()</php> already exists and behaves identically to how <php>'**'()</php> would, <php>'**'()</php> is simply an alias of it. | Since <php>pow()</php> already exists and behaves identically to how <php>'**'()</php> would, <php>'**'()</php> is simply an alias of it. |
The existing operators themselves behave the same as ever. | The existing operators themselves behave the same as ever. |
| |
Quoting function names in function calls is not new, it is a consequence of [[rfc:uniform_variable_syntax|Uniform Variable Syntax]]. | Being able to quote function names in function calls (e.g. <php>'+'(1, 1)</php>) is not a new idea introduced by this RFC, it has been possible since [[rfc:uniform_variable_syntax|Uniform Variable Syntax]] in PHP 7.0. |
| |
===== Future Scope ===== | ===== Future Scope ===== |