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

Y.Watanabe php-users@php.gr.jp
Wed, 09 Jan 2002 21:50:18 +0900


ども。渡辺と申します。

今まで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

というエラーが出ます。

(書き方2)
   <?php
    $val = true; // falseでもよいけど
    if ( $val == true ) { $str = "aiueo"; } else { $str = ""; }
    print $str ;
   ?>

という風に、変数がきちっと定義されるようにしておかないと
その変数にアクセスしようとするとエラーになるようです。
4.0.6で書いていたころは、「定義されてない変数にアクセス
しようとすると自動的にその値はnullとみなされる(らしい)」ので
書き方1のように書いてもよかったのですが・・・。

(1) あいまいなコードを書く自分が悪いんだからちゃんと書きましょう。
(2) php.ini 等の設定でうまく回避できることだよ。
   (別に4.1.1になったからそうなったわけじゃないのか?)

上の(2)みたいな対処策ってないでしょうか?(苦笑)