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

関連記事

xrea.comサーバにPEARをインストールする方法... Monoar / Pixabay CGIモードでgo-pear.phpを実行 xrea.comで、PEARのWEBインストーラーであるgo-pear.phpを使ってインストールしたかったのですが、何度試してもtempフォルダの権限が変わってしまい、エラーになってしまいます。 結論...
Geeklogの管理画面で記事一覧に列を追加する... Geeklogで記事一覧に任意の列を追加する方法 わたくし、Geeklogの記事管理画面(story.php)で記事一覧を表示する際に、編集アイコン列の隣に新しい列を挿入したかったんです。 結論 story.phpで列の定義を行い、lib-admin.phpで各行の処理を定義する。 ...
PHPで画像を動的に出力する際にキャッシュさせない... PHPのGDを使って合成した画像を出力するスクリプトを作って、テスト用にタグをたくさんならべて、変化をチェックしてみた。 しかし、URLが変わらないためか、いくつかの画像が表示しきれなかったり、他と同じだったり・・・ 単発でスクリプトを叩くと、ちゃんと表示されるので...
Google App EngineでPHPを動かす?! "PHP Classes"のメーリングリストで、Google App EngineでPHPを動かしてみるといったポストがあったので、面白そうだと思って読みに行ってみた。 Running PHP on Google App Engine - PHP Classes blog 従来Pyt...

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

シェアする

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