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

関連記事

「T_ENCAPSED_AND_WHITESPACE」エラー時に注意すべき点... 「T_ENCAPSED_AND_WHITESPACE」の原因がわからない よくある原因 ヒアドキュメントの宣言"<<<"の前にスペースが入っていなかった! ヒアドキュメント内に配列を使ってて"{}"でくくることを忘れてた! 括弧を閉じ忘れてた!(だいたい...
PHPの配列でキーを再採番する方法 PHPの配列で歯抜けになったキーを再採番する方法 PHPでarray_uniqueなどの配列用関数を使うと、配列のキー(添字、要素名)が、連想配列でなく数値の場合、バラバラになる(連番にならない)ことがある。 これを、ちゃんと連番にしたい。いい方法はないか。 結論 sortをかます。...
xrea.comサーバにPEARをインストールする方法... Monoar / Pixabay CGIモードでgo-pear.phpを実行 xrea.comで、PEARのWEBインストーラーであるgo-pear.phpを使ってインストールしたかったのですが、何度試してもtempフォルダの権限が変わってしまい、エラーになってしまいます。 結論...
PHPでファイルの拡張子を調べる方法 アップロード済みローカル・ファイルのMIMEを調べたい 答え pathinfo()関数で、返ってきた配列の"extension"の値を調べればよろし $sFilePath = "./hogehoge.png"; if(File_Exists($sFilePath))...

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

シェアする

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