call_user_func_array()が動かない

これはPHPでプログラムを作っている方向けの情報です。

PHP 5.3からPHP 5.4にすると、
call_user_func_array()は今まで同様には動きません。

PHP 5.3のバグやセキュリティの修正は
2014年8月14日で終了しているので、
PHP 5.3を使い続けるわけにはいかないことでしょう。

http://stackoverflow.com/questions/11281992/does-the-following-call-to-call-user-func-array-work-on-php-5-4にこの問題が寄せれ、解決策が提示されていましたので紹介します。

問題

PHP 5.4でcall_user_func_array()が動かない。
どうしたら良いか?

解決策

以下の関数を追記して

//generic utility function for this kind of situations
function &array_make_references(&$arrSomething)
{
$arrAllValuesReferencesToOriginalValues=array();
foreach($arrSomething as $mxKey=>&$mxValue)
$arrAllValuesReferencesToOriginalValues[$mxKey]=&$mxValue;
return $arrAllValuesReferencesToOriginalValues;
}

今まで以下のように書いていた部分を

call_user_func_array("my_function", array($strSomething));

以下のように置き換えると良いですよ。

call_user_func_array("my_function", array_make_references(array($strSomething)));

おまけ

なお、PHPの各バーションがいつまでメンテナンスされるかは
http://en.wikipedia.org/wiki/PHPをご参考にどうぞ。

困ったときはstackoverflow.comさんに聞くと解決するかもしれません。

お問い合わせについて

業務として技術コンサルティングやシステム設計・開発を行っております。
気になることがありましたらご相談下さい。
ご相談のみで完結する場合、コンサルティング費用の目安は
内容によりますが1時間で5千円〜1万円ていどです。
コンサルティングや開発を検討されるその前に、
まずはお気軽にコメントやメールでご連絡下さい。
※ご契約前のコメントやメールでのやりとりは無料です。

お問い合わせフォーム

お急ぎの場合など、ただちに業務対応が必要な場合は、こちらのお問い合わせフォームをご利用ください。かきしちカンパニーお客様窓口が直ちに対応いたします。
※窓口へのお問い合わせ、お見積もりは無料です。


お名前 (必須)

メールアドレス (必須)

題名

メッセージ本文 (必須)

Share

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*