PHP Conference Japan 2024

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 則註記

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() 讓檢查更容易。
Taufik Nurrohman
1 年前
要知道匿名函式只是一個 `Closure` 類別的實例,因此這等同於檢查變數是否為匿名函式

<?php

$test
= function () {};

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

?>
To Top