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でも試してみたところのアチョンブリケ。

関連記事

PHPでComet:フォーカスの当たっていないウィンドウが更新されない... PHPとprototype.jsを使ってAjaxでCometなチャットを作ろうとした。 FireFoxで動作検証していたのだが、ブラウザの複数ウィンドウを立ち上げ、別マシンでもウィンドウを立ち上げて検証していたところ、フォーカスの当たっていない(アクティブでない)ウィンドウでは、TextAre...
Geeklogの管理画面で記事一覧に列を追加する... Geeklogで記事一覧に任意の列を追加する方法 わたくし、Geeklogの記事管理画面(story.php)で記事一覧を表示する際に、編集アイコン列の隣に新しい列を挿入したかったんです。 結論 story.phpで列の定義を行い、lib-admin.phpで各行の処理を定義する。 ...
PHPで画像を動的に出力する際にキャッシュさせない... PHPのGDを使って合成した画像を出力するスクリプトを作って、テスト用にタグをたくさんならべて、変化をチェックしてみた。 しかし、URLが変わらないためか、いくつかの画像が表示しきれなかったり、他と同じだったり・・・ 単発でスクリプトを叩くと、ちゃんと表示されるので...
PHP:Smartyで小数点を四捨五入する PHPのROUND関数のように、Smartyで浮動小数点を丸める方法 ■文法 {データ|round:桁} ※桁は省略可 例えば、"$data=10.121212121212"の場合、 ■テンプレートの記述 答えは{$data|round:2}です。 ■表示結果 ...

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

シェアする

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