Могу ли я передать такую ​​функцию, как закрытие, в PHP - PullRequest
0 голосов
/ 16 июня 2020

У меня есть функция в PHP, которая должна принимать аргумент и возвращать его.

function identity($argument) { return $argument; }

Это работает, как ожидалось:

identity(4) === 4

Я бы хотел передать это другим функциям. Например, вот так:

array_map(identity, [1, 2, 3]).

Есть ли способ сделать это БЕЗ использования анонимной функции? Насколько я могу судить, это единственный способ заставить его работать:

array_map(fn ($arg) => identity($arg), [1, 2, 3])

но это более многословно, чем мне бы хотелось.

Если бы я do array_map(identity, [1, 2, 3]) Я получаю:

PHP Warning:  Use of undefined constant identity - assumed 'identity' (this will throw an Error in a future version of PHP) 

Я прибегал к определению идентичности, например:

function identity() { return fn ($arg) => $arg; }

и называю это так:

array_map(identity(), [1, 2, 3])

но это тоже явно не идеально.

...