[PHP-users 4639] Re: php4.1.1 での変数の扱いが厳密になってる

Youichi Iwakiri php-users@php.gr.jp
Wed, 09 Jan 2002 22:18:01 +0900


いわきりです

Y.Watanabe wrote in <46C1990C311FA7yuw@msj.biglobe.ne.jp>:
 >今までphp4.0.6を使っていたのですが、
 >ためしに、php4.1.1 でテストコードを書いたら、
 >変数の扱いが厳密になっていて、
 >いままでのコードの書き方だとエラー出まくり!です。
 >php4.0.6で書いていたころは
 >(書き方1)
 >   <?php
 >    if ( $val == true ) { $str = "aiueo"; }
 >    print $str ;
 >   ?>
 >と書いても何の問題も無かったのですが、これをphp4.1.1で実行すると、
 >  Warning: Undefined variable: val in /home/htdocs/test.html on line 2
 >  Warning: Undefined variable: str in /home/htdocs/test.html on line 3
 >というエラーが出ます。

php.iniの設定で
 error_reporting = E_ALL
に(なって|してい)ませんか?
#そうしているほうが良いのですけども :)

一応、4.2.0-dev, 4.1.0のphp.ini-distのデフォルトは
 error_reporting = E_ALL & ~E_NOTICE
でそのままだと先のWarningメッセージは表示されません。

 >4.0.6で書いていたころは、「定義されてない変数にアクセス
 >しようとすると自動的にその値はnullとみなされる(らしい)」ので
 >書き方1のように書いてもよかったのですが・・・。
 >
 >(1) あいまいなコードを書く自分が悪いんだからちゃんと書きましょう。
 >(2) php.ini 等の設定でうまく回避できることだよ。
 >   (別に4.1.1になったからそうなったわけじゃないのか?)
 >上の(2)みたいな対処策ってないでしょうか?(苦笑)

(2)で回避は出来るけど、(1)を実践しましょう :-)