php Как передать в качестве колбэка не анонимную (обычную) функцию обратного вызова (колбэка) -- пример кода
Primary tabs
- Цель: Дать возможность использовать повторно код колбэка в разных классах
- Задача: передать неанонимную фунцкию (статический метод) как анонимную функцию обратного вызова
Ситуация
У меня есть функция с сигнатурой:
public function dontSeeFormIsEditable(string $formSelector,
array $exeptNames = [],
callable $safeNameCheckFunction = null) {/*....*/}
В качестве третьего параметра хочется передать не анонимную функцию -- а именно статический метод класса:
class TestUser extends BaseUser
{
public static function isInputSafe($inputName)
{
$result = false;
return $result;
}
}
Возможное решение
Можно написать в том же классе метод, возвращающий анонимную функцию-обёртку над имеющейся статической функцией, тогда класс может выглядеть как-то так:
class TestUser extends BaseUser
{
public static function isInputSafe($inputName)
{
$result = false;
return $result;
}
/**
* Вернёт анонимную обёртку над self::isInputSafe()
*
* @return callable возвращает анонимню функцию
*/
public static function getInputSafeCheckCallback()
{
$realization = function($inputName) {
return self::isInputSafe($inputName);
};
return $realization;
}
}
Тогда передать колбэк, используя обёртку можно так (пример вызова принимающей его функции):
dontSeeFormIsEditable('div', [], TestUser::getInputSafeCheckCallback());- Log in to post comments
- 2496 reads