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.