Apparently this does not return true for callback arguments to many of the internal functions, such as array_map and array_walk.
PHP - Manual: ReflectionParameter::isCallable
2024-11-14
(PHP 5 >= 5.4.0, PHP 7, PHP 8)
ReflectionParameter::isCallable — Returns whether parameter MUST be callable
本函数已自 PHP 8.0.0 起被废弃。强烈建议不要依赖本函数。
See the example below for an alternative way to derive this information.
本函数还未编写文档,仅有参数列表。
此函数没有参数。
Returns true
if the parameter is callable, false
if it is
not or null
on failure.
示例 #1 PHP 8.0.0 equivalent
As of PHP 8.0.0, the following code will report if a type supports callables, including as part of a union.
<?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.
官方地址:https://www.php.net/manual/en/reflectionparameter.iscallable.php