2008/10/05

[php]変数未定義という概念がない

これって結構、強烈。

print $_POST["hoge"];

と仮にクライアントで宣言されていない、hogeという名前のForm変数を参照しようとするとバグるのかなと思い、試したら、何も表示されませんでした。

これは、aspでも同じで、宣言されていないform変数を参照しようとすると何も表示されないようです。

別にこれはバグでもなくて、こういう仕様なのだと理解すればオッケーなのですが、この手の場合、変数宣言されていなくてもバグにならないため、システム開発時にform変数がきていると思って、作っていたら、実際はきていなくて、混乱してしまうことがあります。

2年前にaspのプログラムを修正するときに、この問題にぶち当たりました。

反対にcoldfusionでは、ここはしっかりしていて、未定義のform変数を参照する場合、エラーとなります。
(中途半端なところで厳格なんだよなと突っ込みを入れてみたりして)

と同時にCやJavaにおいても宣言されていない変数を参照しにいこうとするとエラーが起きます。
でも、サーバーサイドの言語ではないので説得力がないかも。。。
(上はjspに触れていません)

クライアントではjavascriptもエラーを起こすから、やはりエラーを起こす仕様の言語が多いのかなと思いました。

perlやrubyをやっていればもっと詳しいことがわかったのかもしれないところが、今回のエントリーで悔しいところかな。

そうそう、schemeもエラーを起こしましたね。

0 コメント:

コメントを投稿