Reflectionに対してcall_user_func_arrayは使えない??

ReflectionFunctionを併用して関数の遅延評価をテストしていたのですが、思わぬ挙動に・・・

ReflectionFunctionの基本動作の確認

<?php
$test = new ReflectionFunction('preg_match');
var_dump( $test->invoke('/php/i', 'PHP is the web scripting language of choice.') );
//int(1)

関数を動的に与えるのはちょっとキモイですが、引数を部分的に束縛して実行するには、Reflectionを使うのが便利そうです。

call_user_func_arrayとの相性?

ところが、下記のようにするとエラーになりました。

<?php
$ref = new ReflectionFunction('preg_match');
$arg = array('/php/i', 'PHP is the web scripting language of choice.');
$res = call_user_func_array(array($ref, 'invoke'), $arg);
var_dump($res);

Fatal error: Non-static method ReflectionFunction::preg_match() cannot be called statically

そこ、スタティックで呼んでるつもりないんですけど・・・invokeの先の動作がおかしい気がする。
そういうものなんでしょうか。
PHPのバグのような気がしますが、調べている時間がないので、とりあえずメモしておきます。