スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。



  

HTTP_Requestを使用してPOSTの送信をする方法

WEBサービスAPIを使用する際にはHTTPのメソッドが重要になる。
GETで送信する場合には特に問題がないが、POSTやPUTといったメソッドでの送信は少しややこしい。
今回はそのややこしい処理をなるべく簡単に扱うためのPEARのHTTP_Requestというモジュールの使い方について書いておく。
(PEARはPHP用のライブラリ、HTTP_RequestはPEARのモジュール)

$url = "問い合わせをするAPIのURL";

$http_request = new HTTP_Request($url);

// POSTで送信する場合は以下のようなPEARの定数をメソッドに指定する。
$http_request->setMethod(HTTP_REQUEST_METHOD_POST);

// キーと値をセットする(複数指定が可能)
$http_request->addPostData("key1", "value1");
$http_request->addPostData("key2", "value2");

// リクエストをする
$http_request->sendRequest();

また、リクエスト後にはレスポンスを取得することができる。

// PEARのエラー判定モジュールを使用して結果を確認する
if (PEAR::isError($http_request)) {
  // エラーの場合の処理
} else {
  // レスポンスコードを取得する
  $response_code = $http_request->getResponseCode();
  switch ($response_code) {
    case "200":
    case "201":
    case "202":
      // リクエスト成功時の処理
      break;
    default:
      // リクエスト失敗時の処理
      break;
  }
}

以下のようなメソッドの指定をすることで主要なAPIへのアクセスは可能となる。
HTTP_REQUEST_METHOD_GET   : GET
HTTP_REQUEST_METHOD_PUT   : PUT
HTTP_REQUEST_METHOD_DELETE  : DELETE


  
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コンソールから実行するPHPプログラムに値を渡す方法

コンソールからPHPを実行する際に、ファイル名以降に半角スペース区切りで引数を指定するとプログラム中で値を取得することができる。

// コンソールからの実行例
php -f test.php example1 example2

上記のような指定をしてプログラムを実行した場合、プログラム中のargv配列中には以下のように値が格納されている。

array(3)
  [0] => "プログラムの絶対アドレス",
  [1] => "example1",
  [2] => "example2",


例えば、コンソールで1つ目に指定したexample1という値は$argv[1]に格納されている。

echo $argv[1];
→コンソール内に「example1」と表示される。




  

テーマ : プログラミング
ジャンル : コンピュータ

cakePHPでアソシエーションを使用せずに複数テーブルの情報を取得する方法

cakePHPで複数テーブルにまたがった値を取得する場合にはアソシエーション機能を使うことができる。
クラスにアソシエーションを指定しておけば、テーブルの情報を取得する際に自動的に関連するテーブルの情報を拾ってきてくれる便利な機能だが、不必要な情報まで拾ってきてしまうため、こまめに指定しなければDBへの負荷がかかってしまう。
一時的にアソシエーションを削除、作成することもできるが、アソシエーションを指定しなくても複数テーブルにまたがる情報を取得する方法があるので以下にまとめる。この方法をとれば、必要な情報のみを取得できるため負荷の軽減が見込める。

members(個人情報テーブル)
idnameattribute_id
1太郎 1
2花子2
3丸雄4

attributes(属性テーブル)
idname
1小学生
2中学生
3高校生

上記のようなテーブルがあった場合、membersテーブルに対応するMemberクラスのメソッドで以下のように指定する。

$conditions = array(
 "join" => array(
  array(
   "type" => "INNER",
   "table" => "attributes",
   "alias" => "Attribute",
   "conditions" => array(
    "Member.attribute_id = Attribute.id",
   ),
  ),
 ),
);
$this->find("list", $conditions);


この場合、attribute_idで属性テーブルと連結しているが、
typeにINNERを指定しているため、内部的にはINNER JOINを使用した結合が行われている。

結果表
Member__idMember__nameMember__attribute_idAttribute__idAttribute__name
1太郎 11小学生
2花子22中学生

typeをLEFTで指定するとLEFT JOINを使用した結合が行われる。
Member__idMember__nameMember__attribute_idAttribute__idAttribute__name
1太郎 11小学生
2花子22中学生
2丸雄4NULLNULL






  

テーマ : プログラミング
ジャンル : コンピュータ

検索フォーム
プロフィール

サトリヒロシ

Author:サトリヒロシ
ビジネスを重視した企画を支援したいエンジニアが、何かを書こうとするブログです。

サトリ潜伏先
サトリ倉庫

WEB関連の技術で調査リクエストがあればご連絡ください。

カレンダー
08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
カテゴリ
最新記事
最新コメント
最新トラックバック
月別アーカイブ
RSSリンクの表示
リンク
QRコード
QRコード
FC2カウンター
スポンサードリンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。