PHPで開発をやっている者です。E_NOTICEが有効な状態で開発を進めています。
しかし最近、なぜE_NOTICEエラーは直さなければならないのか?と聞かれました。自分としては、直したほうがいいからとしか答えようがありませんでした・・・
エラーをわざわざ直す理由を教えていただけないでしょうか?
具体的には、コードが機能しているにも関わらず、管理者がお金を払ってまでこのエラーを直す必要があるのかということを教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
PHPの実行時設定に関するドキュメントを読むと、なぜE_NOTICEを有効にするといいのかが少しわかると思います。以下引用です。
開発時にE_NOTICEを有効にすることにはいくつ かの利点があります。デバッグのために、NOTICE メッセージはコード の中のバグの可能性について警告を与えます。例えば、代入されていな い値を使用した場合は、警告を発生します。 これは、書き間違いを見付け、デバッグの時間を節約するために非常 に有用です。NOTICEメッセージは、好ましくないコードに警告します。 例えば、$arr[item] は $arr['item'] と書く方が好ましいです。 これは、PHPが"item" を定数として取り扱うためです。 定数でない場合、PHPは配列の添字用の文字列と判断します。
(引用終わり)
もう少し詳しく説明します。E_NOTICEを有効にする理由は3つあります。
①打ち間違えを発見する
E_NOTICEエラーの主な原因は打ち間違えです。
<?php $name = 'joe'; // (下にスクロールしていくと・・・) if ($nam) { // 打ち間違えです。$namはnullになります。 echo "ログインしました"; } else { echo "ログインしてください"; } ?>E_NOTICEが無効な場合の出力
ログインしてください.....
これは違いますよね。
E_NOTICEが有効な場合の出力
Notice: Undefined variable: nam in /foo/bar/baz.php on line ...
ログインしてください
PHPでは、存在しない変数はエラーになるのではなくnullとして返されることが多く、それによってコードが思うように動作しないことがあるので、E_NOTICE警告には従ったほうがいいです。
②あいまいな配列の添え字を発見してくれる
変わってしまう可能性のある配列の添え字について、警告を出してくれることもあります。
例として以下のコードをあげます:
あるコードは当初はこのようなものだったとしましょう。
E_NOTICEが無効の場合の出力
joe
ある日このコードにライブラリを付け足したとします。
<?php // この直後にライブラリが付け足されています include_once('lib.php'); $arr = array(); $arr['name'] = 'joe'; // 下までスクロールすると echo $arr[name]; ?>ライブラリはこのように書いてあったとします
<?php define("name", "Mary"); ?>$arr[name]は$arr[Mary]に展開されてしまいます。
しかし$arrの中にMaryというキーがありません。
E_NOTICEが有効な場合の出力
開発者がE_NOTICEを有効にしていたならば、PHPは次のようなエラーメッセージを出力したでしょう:
Notice: Use of undefined constant name - assumed name' in /foo/bar/baz.php on line ...
joe
③最大の理由
E_NOTICEエラーを直さずに放っておいたら、あなたはどんどん独りよがりになっていき、警告を無視するようになるでしょう。そんなときに本当にエラーが起きたとしても、あなたは気づかないでしょう。
だから、E_NOTICEエラーは直されるべきなのです。
投稿2014/07/27 02:30
総合スコア463
0
E_NOTICEを有効にすると
バグの可能性のあるコードが表示されるので、
バグの可能性を減らす為にE_NOTICEを付けると良いです。
また、設定が変えられないサーバーに移動したら動かなくなったとか、
バージョン変えたら動かなくなったという事も減らせます。
PHPのE_NOTICEがどうか走りませんが、一般にwarningは
最適化が効かない等で遅くなる事を防ぐ事もあり得ます。
このバグの可能性や性能の問題を潰す必要がないのであれば、修正する必要はないでしょう。
しかし、長く保守していく安全性の高いシステムを維持したいのであれば、修正した方が良いでしょう。
投稿2014/07/27 09:06
総合スコア228
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/08/12 07:27