PHPの無名関数の落とし穴(500エラー)

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

無名関数を使うときは”;”(セミコロン)を忘れがち

function(関数)やif文を定義するときの”{}”の最後に”;”(セミコロン)をつけなくてもエラーが出ないことがあるのですが、それに慣れてしまって(横着癖がついて)セミコロンの閉じ忘れという「ちょいミス」に気づくのに、思いの外ずいぶんと時間がかかってしまいました。ini_set関数で’Error_display’を’On’にしても500エラーで内容がわからず、しぶしぶWebサーバーのphp.iniを書き換えてやっと原因がつかめました。

自分の戒めのためにも、記録に残しておきたいと思います。あぁ、プログラムから離れるとすぐこれだ、、、とほほ。いや、Pythonを勉強していて閉じる癖がなくなったというのは言い訳なんですけどね。

$hello = function( $s ){
return "Hello world from ${s}.";
}; // ←このセミコロンが抜けている
$hello = 'me';
echo $hello; // "Hello world from me."が表示される
function hello( $s ){
return "Hello world from ${s}.";
} //←セミコロンがなくてもPHP.iniの設定によってはエラーが出ない
echo hello( 'me' ); // "Hello world from me."が表示される

PHPでは「無名関数」と呼ばれる、変数やクラスなどに関数を割り当てて、変数に値を代入した時点で計算(処理)をしてくれる機能があるのですが、あまり使った事がなく、最近PythonやJavascriptなど他の言語の勉強中に見かけるようになり、PHPでも試してみたところのアチョンブリケ。


スポンサーリンク
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク
レクタングル(大)広告