Blog, The

1 月 22 日生まれ、ブログ座です。

PHP で無名関数であることを判定する

メモ。

is_callable ってのがそれかなって思ったんですが、

PHP: is_callable - Manual

これだと関数名の文字列とか array($obj, 'method') みたいな配列も true になるっぽい。

どうやら PHP の無名関数は

PHP: 無名関数 - Manual

無名関数の実装には Closure クラスを使っています。

ってことらしいので、確実に無名関数を判定したい場合は、こうすればいいみたい。(継承を懸念したけど Closure は final なので大丈夫っぽい)

is_object($obj) && $obj instanceof Closure