オークションサンプルコード

カテゴリ情報を表示する

使用API

オークション カテゴリ情報

構成環境 Apache-2.2.10 + PHP-5.2.5
・レスポンス結果のXMLを解析するためにSimpleXMLを利用しています。
参考サイト
PHP5 SimpleXML

オークションのカテゴリを表示し、選択したカテゴリの子カテゴリに遷移するサンプル。

ダウンロード

サンプルご利用の際は、利用規約をご覧ください。利用規約は、ダウンロードパッケージ内のLICENSE.txtファイルに記載されています。

ダウンロードはこちら (ダウンロードサイズ:約5.6KB)

動作デモを見る(Yahoo!ジオシティーズ)


コード解説

ダウンロードしたアーカイブファイルを展開すると下記のようになります。

`-- sample3
    |-- LICENSE.txt
    |-- README.txt
    |-- sample
    |   `-- CategoryDemo.php
    `-- sdk
        |-- Category.php
        `-- common
            |-- APIAccessBase.php
            `-- YahooAuctionAPI.php

YahooAuctionAPI.php

<?php


/**
 * YahooAuctionAPI class
 */
class YahooAuctionAPI
{

    /**
     * private $_url Request URL 
     */
    private $_url = "";

    /**
     * private $_method httpmethod
     */
    private $_method = "GET";

    /**
     * private $_timeout time out
     */
    private $_timeout = "30";

    /**
     * private $_queryArray Request Query 
     */
    private $_queryArray = array();

    /**
     * private $_errorCode curl error code
     */
    private $_errorCode = "";

    /**
     * private $_userAgent UserAgent
     */
    private $_userAgent = "auction-api-developer";

    /**
     * construct
     */
    public function __construct()
    {
    }

    /**
     * public setUrl 
     * @param $url 
     * @return 
     */
    public function setUrl($url)
    {
        $this->_url = $url;
    }

    /**
     * public setMethod
     * @param $method http method
     * @return 
     */
    public function setMethod($method)
    {
        $this->_method = $method;
    }

    /**
     * public setQuery 
     * @param $key key
     * @param $value value
     * @return
     */
    public function setQuery($key, $value)
    {
        $this->_queryArray[$key] = $value;
    }

    /**
     * public setTimeout
     * @param $timeout
     * @return 
     */
    public function setTimeout($timeout)
    {
        $this->_timeout = $timeout;
    }

    /**
     * public getErrorCode
     * @return $_errorCode
     */
    public function getErrorCode()
    {
        return $this->_errorCode;
    }

    /**
     * public execute 
     * @return Response / false
     */
    public function execute()
    {

        // init curl
        $ch = curl_init();

        // set parameters
        $parameters = $this->_makeParameter();

        // curl option
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERAGENT, $this->_userAgent);
        curl_setopt($ch, CURLOPT_TIMEOUT, $this->_timeout);

        // select method
        switch ($this->_method) {
        case "GET":
            curl_setopt($ch, CURLOPT_HTTPGET, true);
            if ($parameters) {
                curl_setopt($ch, CURLOPT_URL, $this->_url . "?" . $parameters);
            } else {
                curl_setopt($ch, CURLOPT_URL, $this->_url);
            }
            break;
        case "POST":
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_URL, $this->_url);
            if ($parameters) {
                curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
            }
            break;
        default:
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $this->_method);
            curl_setopt($ch, CURLOPT_URL, $this->_url);
            if ($parameters) {
                curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
            }
            break;
        } 


        // get response
        $response = curl_exec($ch);

        // get curl error code
        $this->_errorCode = curl_errno($ch);

        // close curl
        curl_close($ch);

        // check curl error code
        if (CURLE_OK != $this->_errorCode) {
            return false;
        }

        $ret = simplexml_load_string($response);
        return $ret;
    }

    /**
     * private _makeParameter 
     * @return parameter
     */
    private function _makeParameter()
    {
        $parameters = null;
        foreach ($this->_queryArray as $key => $query) {
            if (is_null($parameters)) {
                $parameters = $key . "=" . $query;
            } else {
                $parameters .= "&" . $key . "=" . $query;
            }
        }
        return $parameters;
    }

}

?>

APIAccessBase.php

<?php


require_once('YahooAuctionAPI.php');

/**
 * APIAccessBase class
 */
abstract class APIAccessBase
{

    const API_OPTION_APPID       = "appid";
    const API_OPTION_URL         = "url";
    const API_OPTION_PAGE        = "page";
    const API_OPTION_AUCTIONID   = "auctionID";
    // for listing
    const API_OPTION_ESCROW      = "escrow";
    const API_OPTION_EASYPAYMENT = "easypayment";
    const API_OPTION_THUMBNAIL   = "thumbnail";

    const LISTINGS_PER_PAGE      = 50;

    /**
     * private $_api YahooAuctionAPI
     */
    private $_api = null;

    /**
     * protected construct
     * @param $appid ApplicationID
     */
    protected function __construct($appid)
    {
        $this->_api = new YahooAuctionAPI();
        $this->_api->setQuery(self::API_OPTION_APPID, $appid);
    }

    /**
     * protected action
     * @return simplXML object or errorCode 
     */
    protected function action()
    {
        $obj = $this->_api->execute();
        if (!$obj) {
            $obj = $this->_api->getErrorCode();
        }
        return $obj;
    }


    /**
     * protected setOption 
     * @param $key key
     * @param $value value
     */
    protected function setOption($key, $value)
    {
        switch ($key) {
        case self::API_OPTION_URL:
            $this->_api->setUrl($value);
            break;
        default:
            $this->_api->setQuery($key, $value);
            break;
        }
    }

}
?>

Category.php

<?php


require_once('common/APIAccessBase.php');

/**
 * Category class
 */
class Category extends APIAccessBase
{

    /**
     * url for access
     */
    const AUCTION_API_URL = 'http://auctions.yahooapis.jp/AuctionWebService/';

    /**
     * api name
     */
    const API_NAME = 'categoryTree';

    /**
     * api version
     */
    private $_version = null;

    /**
     * public construct
     * @param $appid ApplicationID
     */
    public function __construct($appid, $version)
    {
        parent::__construct($appid);
        $this->_version = $version;
    }

    /**
     * public action
     * @return simplXML object or errorCode
     */
    public function action()
    {
        parent::setOption(parent::API_OPTION_URL, self::AUCTION_API_URL . $this->_version . "/" . self::API_NAME);
        return parent::action();
    }

    /**
     * public setOption
     * @param $key key
     * @param $value value
     */
    public function setOption($key, $value)
    {
        parent::setOption($key, $value);
    }

}
?>

CategoryDemo.php

<?php


require_once('../sdk/Category.php');

/**
 * このプログラムのパスを取得
 */
$self_path = $_SERVER['SCRIPT_NAME'];

/**
 * いくつかの記号をHTMLの表現形式に変換する関数の定義
 */
function convert($str) {
    return htmlspecialchars($str, ENT_QUOTES);
}

/**
 * カテゴリIDを取得
 */
$categoryId = 0;
if (array_key_exists('category', $_GET)) {
    $categoryId = (int) $_GET['category'];
}

/**
 * カテゴリ情報APIのクラスオブジェクトを生成します。
 * 第1引数にアプリケーションID(appid)
 * 第2引数にAPIのバージョン(例:Version 2 ⇒ V2)
 * を指定してください。
 */
$obj = new Category('<あなたのアプリケーションID>', 'V2');

/**
 * カテゴリIDをセットします。
 */
$obj->setOption('category', $categoryId);

/**
 * Yahoo!オークションWeb APIにリクエストを投げ、
 * カテゴリ情報を取得します。
 */
$result = $obj->action();
?>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>オークションデモサイト - オークションカテゴリ情報</title>
</head>
<body>
<font color=purple><h3>オークションデモサイト - オークションカテゴリ情報</h3></font>

<?php if (is_object($result)) { ?>
<b><small><?php echo convert($result->Result->CategoryPath); ?></small></b>
<br /><br />
<table bgcolor="#fffacd" cellpadding="4" cellspacing="0" width="600" border="0">
<tr><td>
<font color="brown"><b>&nbsp;&nbsp;カテゴリ名&nbsp:<?php echo convert($result->Result->CategoryName); ?></b></font>

<?php if ($result->Result->ChildCategoryNum > 0) { ?>
&nbsp;&nbsp;(子カテゴリの数:<?php echo convert($result->Result->ChildCategoryNum); ?>)
<?php } else { ?>
&nbsp;&nbsp;(子カテゴリの数:0)
<?php } ?>

</td></tr>
<tr></tr><tr></tr>
<tr><td>
<table cellpadding="2" cellspacing="3" border="0" width="100%">
<?php if ($result->Result->IsLeaf == 'false') { ?>
<tr bgcolor="#ffffff" nowrap><td><small><b>&nbsp;カテゴリ名&nbsp;(オークション数)</b></small></td></tr>
<?php foreach ($result->Result->ChildCategory as $child) { ?>
<tr bgcolor="#ffffff" nowrap>
<td><small><b><a href="./CategoryDemo.php?category=<?php echo convert($child->CategoryId); ?>">
<?php echo convert($child->CategoryName); ?>
<?php if ($child->IsLink == 'true') { ?>@</a></b>
<?php } else { ?></a>&nbsp;(<?php echo convert($child->NumOfAuctions); ?>)</b>
<?php } ?>
</small></td>
</tr>
<?php } ?>
<?php } else { ?>
<tr bgcolor="#ffffff"><td><small><b>&nbsp;このカテゴリの子カテゴリはありません。</b></small></td></tr>
<?php } ?>
</table>
</td></tr>
</table>
<?php } ?>

<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->
<a href="http://developer.yahoo.co.jp/about">
<img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_105_17.gif" width="105" height="17" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px" /></a>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
</body>
</html>

このページのトップへ