From 182998553e8b012205699e4c4b8ccb7ad1903777 Mon Sep 17 00:00:00 2001 From: Christian Schneider Date: Thu, 9 Apr 2026 16:45:03 +0200 Subject: Simplify creation of helper function and avoid eval in callable string case --- it.class | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'it.class') 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) -- cgit v1.2.3