ReflectionFunction::isAnonymous

(PHP 8 >= 8.2.0)

ReflectionFunction::isAnonymous检查函数是否为匿名函数

描述

public ReflectionFunction::isAnonymous(): bool

检查函数是否为匿名函数

参数

此函数没有参数。

返回值

如果函数是匿名函数,则返回 true,否则返回 false

示例

示例 #1 ReflectionFunction::isAnonymous() 示例

<?php

$rf
= new ReflectionFunction(function() {});
var_dump($rf->isAnonymous());

$rf = new ReflectionFunction('strlen');
var_dump($rf->isAnonymous());
?>

上面的示例将输出

bool(true)
bool(false)

参见

添加备注

用户贡献备注 2 备注

1
nicolasgrekas at php dot net
1 年前
闭包可以是匿名的,也可以不是匿名的。

这是一个匿名闭包
$c1 = function () {};

这是一个 *非* 匿名的闭包
$c2 = Closure::fromCallable(['Foo', 'bar']);

ReflectionFunction::isAnonymous() 对 $c1 返回 true,对 $c2 返回 false。

在 PHP 8.2 之前,需要进行以下检查来区分两者
$r = new \ReflectionFunction($c1);
$isAnonymous = false !== strpos($r->name, '{closure}');

ReflectionFunction::isAnonymous() 使检查变得更容易。
0
Taufik Nurrohman
1 年前
您知道匿名函数只是 `Closure` 类的实例,因此这等效于检查变量是否为匿名函数

<?php

$test
= function () {};

if (
is_callable($test) && is_object($test) && $test instanceof Closure) { /* ... */ }

?>
To Top