質問: ### 質問内容 以下のPHPコードについて質問が二つあります。 ``` header("Content-Type: application/json"); echo $json; ``` **質問1** このコードがjsonデータを送信しているのはわかるのですが、どのjsonデータを送信しているのかがわかりません。 headerメソッドは送信するべきjsonデータをどこからどのように見つけているのでしょうか? **質問2** 上記のコードは、とあるWindowsアプリから送られてきたリクエストに対するレスポンスとして書かれていた、サーバサイドのものです。 当然このコードのレスポンスが返る先はそのWindowsアプリであることはわかります。 しかし、headerメソッドはどのようにしてWindowsアプリのURLを見つけているのでしょうか? どこかで設定しているのでしょうか? 追記 -- 少し調べなおしたところ、headerメソッドはデータを送信するのではなくHTTPヘッダを送信するメソッドであることがわかりました。 実際に送信されるデータの中身は一行下の`echo $json;`の部分だということがわかりましたが、ここで新しい疑問が出てきました。 `echo`とは「1 つ以上の文字列を出力する」という言語構造のはずですが、なぜこれがレスポンスを返したことになるのでしょうか? 自分はPHPを本格的に勉強し始めてから1年も経っていない初心者であり、認識の前提を間違えている可能性が否定できません。 もしそのような間違いを見つけましたら是非ご指摘ください。 よろしくお願いいたします。
回答: > > 質問1 > > > ``` header("Content-Type: application/json"); ``` はjson形式でデータを返すっていう宣言をしてるだけですので、これだけではデータは何も返してません。 この処理の後に何らかのデータを出力してるはずです > > 質問2 > > > (Windowsアプリがきっとクライアント側と想定して) クライアントがサーバーに接続してサーバーがPHPプログラム呼び出して、その接続を利用して何らかのデータを返してる感じです。基本的にWebブラウザで特定のURLを叩いた際に特定のサーバーが応答するのと同じ感じです。 PHPなので大体はクライアントとの接続はApacheというHTTPサーバーが受け持ち、HTTPサーバーがPHPを呼び出して結果をクライアントに返す感じですね クライアント---HTTPリクエスト--->Apache----プログラムを呼び出し--->PHP クライアント<---HTTPレスポンス---Apache<----結果受取---PHP こんな感じ いい感じのサイトがなかったのですが http://www.actlink.co.jp/text/php/01/01.html 参考になりそうかも