PHP. Как определить определить и использовать анонимную функцию в параметре?

Главная  >>  Backend  >>  PHP. Как определить определить и использовать анонимную функцию в параметре?

Php последних версий дает нам прекрасную возможность использовать анонимные функции при, например, передаче параметров в функцию. Таким образом можно существенно разгрузить код, не вынося функции, которые используются единоразово в отдельные, полноценные методы.

Приведу пример практического использования анонимной функции при работе с валидаторами на фреймворке Yii2.

Пример, несмотря на свою простоту, очень показателен. Мы задаем метод, который может провести любые манипуляции с значением, осуществив его, например, фильтрацию. Данный пример идеально показывает суть анонимных функций в качестве параметров передаваемых в метод.

Но, на практике часто также появляется вопрос менее очевиден, чем само использование анонимных функций. «Как использовать переданную функцию внутри метода?».

Ответ на этот вопрос кроется в классе, на базе которого в php реализована поддержка анонимных функций — это класс Closure.
Соответственно параметр, являющийся анонимной функцией можно проверить при помощи оператора instanceof. Например:

Этот пример показывает, как использовать анонимную функцию, переданную в качестве параметра. Если параметр $value является функцией — мы выполняем ее и возвращаем результат выполнения. В противном случае возвращаем само значение переменной.