なぜ header('Location: ' . SITE_URL); で文字連結できるのですか?

header に渡すものが文字列だからです。
2021年12月28日
ユーザー

大変、お世話になります。

初歩的な質問ですが、教えて下さい。

header('Location: ' . SITE_URL);

の部分の文字連結ですが、なぜ、このような書き方になるのでしょうか?

本来の形としては、

header('Location:  http://localhost:8562');

のように、() 内でLocation: http://localhost:8562全体をクォーテーションで囲うものだと思います。(Location: http://localhost:8562は文字列だから?)

'Location: 'だと、Location: ~全体を囲う最初のクォーテーションがないことになるのではと思います。

そして、SITE_URLのような変数を連結する時に、変数はクォーテーションで囲う必要のないことは分かりますが、Location: ~全体を囲う、後ろ側の閉じクォーテーションが不足しているのではないかと思うのです。

つまり、header('Location: ' . SITE_URL);だと、Location: ~全体を囲う最初のクォーテーションがなく、SITE_URLの後ろに、Location: ~全体を囲う後ろ側のクォーテーションをクォーテーションで囲ったものを、ドットで繋がなければいけない、つまり、

header(''Location: ' . SITE_URL . ''');

のように書かなければいけないと思うのですが、なぜ、そうではないのでしょうか?

(言わんとすることが伝わっていますでしょうか?)

上手に説明ができないのですが、Location: URL全体を囲うクォーテーションの中での文字連結について、教えて頂ければと思います。

よろしくお願いします。

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

プレミアムプランとは?