第9回 HTTP_Request クラス - HTTPリクエスト支援ライブラリ (2) - PEAR講座
くまっち先生のPEAR講座
Lecutures on PHP
第9回 HTTP_Request クラス - HTTPリクエスト支援ライブラリ (2) (その2)
リクエストデータ送信
Net_Socketによる接続の確立が行われた後は、その接続状態の確認を行うと共に実際にリクエストとしてリクエストヘッダデータを送信します。リスト2がその該当箇所の抜粋です。
リスト2. リクエスト処理コード
PEAR::isError($err) or $err = $this->_sock->write($this->_buildRequest());
if (!PEAR::isError($err)) {
....
ヘッダデータの送信にはNet_Socketのwriteメソッドを使用します。送信するデータの生成は、_buildRequestというクラスのプライベートメソッドが担当しています。
リクエストを行う際に送信するリクエストヘッダデータは、簡単なリクエストであるならば
GET http://www.phppro.jp/ HTTP/1.1
Host: www.phppro.jp
といったような「キー: 値」を基本構成とするシンプルな内容です。_buildRequestメソッドではHTTPリクエストを行うために、必要となる固有のキーに対する値を生成する役割を持っています。
様々なケースに応じて特定のヘッダ行を付与するといった処理を行っており非常に膨大なコード量となっているためここでは具体的なコード紹介は割愛しますが、いわゆる「HTTPヘッダデータの仕様」が詰ったメソッドと言えるでしょう。

ちなみにリスト2のコードにて論理演算子の「or」を利用して2つの処理を結合させていますが、実はこのコードで条件による分岐処理を行っています。論理演算子の前(左部)の真偽値によって、論理演算子の後(右部)の処理内容を行うか否かを判断するという振る舞いを行うため、特定の条件時のみ実行する処理を1行で書くことのできる記述方法になります。
ここでは論理和のorを使用していますが、論理積のandも同じように利用可能です。リスト3は、それぞれの論理演算子を使用した場合における真偽値ごとの動作結果です。
リスト3. 論理演算子を利用した分岐処理
true or print 'A'; // 出力されない
false or print 'B'; // B と出力される
true and print 'C'; // C と出力される
false and print 'D'; // 出力されない
コード量(文字数や行数)の短縮になる記述方法ですが、コードの可読性については人それぞれ感じるかもしれません。




ページのトップへ


今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!