summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--it.class8
1 files changed, 3 insertions, 5 deletions
diff --git a/it.class b/it.class
index ddb95eb..d5d98dd 100644
--- a/it.class
+++ b/it.class
@@ -1113,11 +1113,9 @@ static function date($format = "", $stamp = null)
# Internal: Convert expression or funcname or function literal to callable
static function createfunc($code)
{
- if ($code instanceof Closure && (new ReflectionFunction($code))->getNumberOfRequiredParameters() == 1)
- $code = function($dummy, $v) use ($code) {return $code($v);};
-
- if (is_string($code) && it::match('^[\w:]+$', $code) && is_callable($code))
- $code .= '($v)';
+ if ($code instanceof Closure && (new ReflectionFunction($code))->getNumberOfRequiredParameters() == 1 ||
+ is_string($code) && it::match('^[\w:]+$', $code) && is_callable($code))
+ $code = static fn($dummy, $v) => $code($v);
if (!is_callable($func = $code) && !function_exists($func = "_it_map_" . md5($code)))
eval("function $func(\$k, \$v) { return $code; }"); # Anonymous functions/closures are slower than this (PHP 7.1)