の使用について質問ですis_null()
。
is_null($x) と null === $xについて議論する他の質問を読みましたが、is_null()
関数が存在する理由にもっと関心がありますか?
私の考えを説明するためのいくつかのテスト:
<?php
header('Content-type: text/plain');
error_reporting(-1);
$test = 'Hello, World!';
$test2 = null;
$test3 = '';
var_dump(is_null($test));
var_dump(null === $test);
var_dump(isset($test));
var_dump(is_null($test2));
var_dump(null === $test2);
var_dump(isset($test2));
var_dump(is_null($test3));
var_dump(null === $test3);
var_dump(isset($test3));
var_dump(is_null($test4));
var_dump(null === $test4);
var_dump(isset($test4));
次の出力が生成されます。
bool(false)
bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(true)
Notice: Undefined variable: test4 in C:\home\ombrelle.co.uk\templates_core\test.php on line 22
bool(true)
Notice: Undefined variable: test4 in C:\home\ombrelle.co.uk\templates_core\test.php on line 23
bool(true)
bool(false)
ご覧のとおり、is_null()
関数または比較メソッドを使用すると通知がスローされるため、isset()
代わりに使用する必要があります。したがって、これらのメソッドを使用して通知を表示しない唯一の方法は、そうでない場合null
です。
次の点も考慮してください。
<?php
header('Content-type: text/plain');
error_reporting(-1);
var_dump((is_null($test1)) ? 'test1' : $test);
var_dump((null == $test2) ? 'test2' : $test);
var_dump((isset($test3)) ? 'test3' : $test);
次の出力が得られます。
Notice: Undefined variable: test1 in C:\home\ombrelle.co.uk\templates_core\test.php on line 6
string(5) "test1"
Notice: Undefined variable: test2 in C:\home\ombrelle.co.uk\templates_core\test.php on line 7
string(5) "test2"
Notice: Undefined variable: test in C:\home\ombrelle.co.uk\templates_core\test.php on line 8
NULL
ここで、3 項ステートメントでは、前述の作業で、まだ通知がありますが、isset()
メソッドはまったく機能しません。通知を表示せずに、これを適切に行うにはどうすればよいでしょうか。
結局のところ、通知は無意味であり、エラー ログに送信されるべきではないことを受け入れるだけでよいのでしょうか。それとも、考慮すべきその他の注意事項はありますか?
現在、多くのエラーの古いシステムをクリーンアップしています。エラーを見逃したくはありませんが、エラーをさらに作成しても意味がありません。この問題に関する信頼できる読み物へのリンクも大歓迎です。