Laravelフレームワーク、より具体的な-フォームマクロを操作しているときに、奇妙なエラーに遭遇しました。
最初は、Laravelに何か問題があると思いましたが、その後、すべてをコンテキストから外しました。
<?php
// placeholder function that takes variable as reference
$function = function(&$reference)
{
// append to variable
$reference = $reference . ':' . __METHOD__;
};
// test with straight call
$variable = 'something';
$function($variable);
echo $variable;
// test with call_user_func(), that gets called in Laravels case
$variable = 'something'; // reset
call_user_func($function, $variable);
echo $variable;
の最初の呼び出し$function
は正しく実行されますが、2回目の試行でcall_user_func()
は、(Codepadからの抜粋)が生成されます。
Warning: Parameter 1 to {closure}() expected to be a reference, value given
PHP Warning: Parameter 1 to {closure}() expected to be a reference, value given
フィドル:Codepad @ Viper-7
これを書いている間、私はここでフィドルについて考えcall_user_func_array()
ましたが、同じエラーが発生します。
参照について何か問題がありますか、それともこれはPHPのバグですか?