Apparently this does not return true for callback arguments to many of the internal functions, such as array_map and array_walk.
(PHP 5 >= 5.4.0, PHP 7, PHP 8)
ReflectionParameter::isCallable — Определяет, должен ли параметр принадлежать типу callable
Функцию УДАЛИЛИ в PHP 8.0.0. Пользоваться функцией настоятельно не рекомендуют.
В приведённом примере показан альтернативный способ, которым получают эту информацию.
Функцию пока не задокументировали; для знакомства доступен только список аргументов.
У этой функции нет параметров.
Метод возвращает true
, если тип параметра callable, иначе false
.
В случае ошибки метод вернёт null
.
Пример #1 Альтернатива в PHP 8.0.0
С PHP 8.0.0 следующий код сообщит, поддерживает ли тип вызываемые объекты, в том числе как часть объединения.
<?php
function declaresCallable(ReflectionParameter $reflectionParameter): bool
{
$reflectionType = $reflectionParameter->getType();
if (!$reflectionType) return false;
$types = $reflectionType instanceof ReflectionUnionType
? $reflectionType->getTypes()
: [$reflectionType]
;
return in_array('callable', array_map(fn(ReflectionNamedType $t) => $t->getName(), $types));
}
?>
Apparently this does not return true for callback arguments to many of the internal functions, such as array_map and array_walk.