?? 'transparent' はなぜ必要なのですか?

index.php で $colorFormGet に何も入らず、 background-color: ; のようなスタイルになってしまうと困るからです。
2022年3月9日
ユーザー

いつもありがとうございます。
別の方から同じ質問があったので、拝見しましたが、まだ納得できなかったので、質問させてください。

同質問の回答として

今回の場合は Cookie に color がセットされていない場合に NULL を返しますので、 ?? 'transparent' は必要となります。

とありますが、 Cookie がセットされていない場合は、 $colorFromGetnulltranparent に変換してますし、セットされてからは、 $colorFromGettransparent を Cookie が受け取るので、 ?? 'transparent' が不要に思えます。

私の認識は以下の通りです。

(1) 未選択の場合は、 $colorFromGettransparent が代入される。

$colorFromGet = filter_input(INPUT_GET, 'color') ?? 'transparent';

(2) ブラウザ上で、 transparent が Cookie にセットされる。

setcookie('color', $colorFromGet);

(3) result.php → index.php に戻る際、 transparent という値が Cookie にセットされているので、 $color にも transparent が代入される。

$color = $colorFromGet ?? filter_input(INPUT_COOKIE, 'color') ?? 'transparent';

(4) 結果、背景色の規定値(transparent) で index.php は表示されるため、 ?? 'transparent' は不要では??

実際に $color?? 'transparent' を付けずに、背景色を未選択で試してみましたが、ソースコードも(4) の状態でエラーが起きていませんでした。( background-color: transparent と表示)

長文となり申し訳ございませんが、ご回答よろしくお願いします。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(12)