isset() と empty() を関数にカプセル化しようとしています。
私のホーム開発サーバー(WinXPのApache 2.4.3、PHP 5.2.17)では問題なく動作しました。Fedora を実行している大学の Linux マシンに移植したところ、未定義のインデックスに関する通知がありました。
自宅のコンピューターで php.ini を確認したところ、エラー報告がすべてに設定されていました。error_reporting(E_ALL); を入れました。私のPHPスクリプトでエラーを複製してみてください。それは起こりませんでした。
質問 1: ホーム開発用コンピューターで通知が届かないのはなぜですか?
これが私の機能です:
<?php
function there($s) {
if (! isset($s)) {
return false;
}
if (empty($s)) {
return false;
}
return true;
}
?>
ここでは、セッション変数が存在するかどうかをテストします。
if (! there($_SESSION['u'])) {
$_SESSION['u'] = new User();
}
関数を切り替えて、 isset() をテストする前に empty() をテストするようにしました。私はまだ学校でこれをテストする機会がありませんでした。
質問 2: 変数が未定義の場合、または設定されていない場合、empty() は一般に通知を回避しますか?
質問 3: there() 関数を使用してこれを行うことはできますか? それとも、未定義または未設定のパラメーターを渡すだけで通知を受け取ることができますか?