Обратный вызов фильтра PHP со значением по умолчанию

Есть ли способ определить значение по умолчанию (или заставить callback вызываться каждый раз) при использовании filter_var_array а также FILTER_CALLBACK ?

Пример данных:

{
"name": "John"}

Пример использования:

$params = filter_var_array($datas_from_above, [
'name' => FILTER_SANITIZE_STRING,
'age' => [
'filter' => FILTER_CALLBACK,
'options' => function ($data) {
// I was thinking $data would be null here
// but this function is not called if the
// param is not present in the input array.
die('stop?');
}
]
], true); // Add missing keys as NULL to the return value

При использовании других фильтров, есть default вариант. Поэтому не должно быть сверхъестественным иметь значение по умолчанию для фильтров обратного вызова. Я что-то упускаю из виду?

Спасибо

1

Решение

Итак, после некоторых комментариев и копаний фильтры в php обрабатывают только то, что содержит входной массив.

Поэтому, если вы хотите гарантировать, что пользовательский обратный вызов всегда вызывается, даже если входной массив не содержит пару ключ => значение, вы можете сделать:

$partial_input = ["name" => "John"]; // E.g. from a GET request
$defaults = ["name" => null, "age" => null];

$input = array_merge($defaults, $partial_input);

$parsed = filter_var_array($input, [
"name" => FILTER_SANITIZE_STRING,
"age" => [
"filter" => FILTER_CALLBACK,
"options" => function ($data) {
// do something special if $data === null
}
]
]);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]