Человек спрашивал как вызвать функцию не разделяя создание и вызов, как в JS одной строкой. Ваш способ совершенно безсмысленен:
$f = function($y){ $x = 1; return $x * $y }
Зачем внешняя функция?
«Это называется Immediately-Invoked Function Expression (IIFE) — Функция-выражение, которая была вызвана сразу же после создания.»
«зато явно вижу вызов функции сразу при создании»
Это разве не синонимы? Человек спрашивает как вызвать функцию сразу при создании, не разделяя создание и вызов на две строки. Этого в пхп сделать невозможно, не нужно путать людей:
function closure() {
// не важно что здесь, это создание
}
$f = closure(); // а это уже другая строка — вызов
Человек хочет обьеденить эти два действия, как это позволяет javascript/python/ruby/lua/etc.
В пхп этого сделать невозможно.
Эта возможность появилась в 5.3 как раз, но она требует имени переменной.
Требуется безымянная функция, чтобы не думать о том, использовалась ли переменная-функция или нет с одной стороны, и чтобы не засорять глобальное пространство имён другими переменными, которые нужны только для манипуляций.
Внутри такой функции объявление нескольких глобальных переменных и множество манипуляций с ними.