楽天市場の商品において、キーワードによる商品検索をすることで、楽天市場の「アフィリエイト商品のHTML」を作成する

楽天市場商品検索APIを使用して、
楽天市場の商品において、キーワードによる商品検索をすることで、楽天市場の「アフィリエイト商品のHTML」を作成する。

上記の処理を行うPHPソースコードを解説しています。

楽天市場の商品において、キーワードによる商品検索をすることで、楽天市場の「アフィリエイト商品のHTML」を作成する

public static function makeHTMLOfIchibaItemSearch(
    URLInfo $urlInfo,
    CommonRESTParameter $commonParameter,
    RESTParameter $restParameter,
    SearchOption $searchOption,
    ItemHTMLOption $itemHTMLOption
) {

    $itemsHTMLInfoMaker = new RakutenItemsHTMLInfoMaker($commonParameter, $restParameter, $searchOption);
    $itemsHtml = ItemSearchOperation::makeItemsHTML($urlInfo, $itemHTMLOption, $itemsHTMLInfoMaker);
    return $itemsHtml;
}

makeHTMLOfIchibaItemSearch()関数は、
楽天市場に対して商品検索を行い、楽天市場の「アフィリエイト商品のHTML」を作成する関数です。

楽天市場の商品に対して、キーワードで商品検索を行います。
その検索結果で得た商品情報を元に、楽天市場の「アフィリエイト商品のHTML」を作成します。

作成された、楽天市場の「アフィリエイト商品のHTML」を、$itemsHtml変数に代入します。
その$itemsHtml変数を、return文によって返します。

現在のところ、楽天市場商品検索APIだけを使用して検索しています。
よって、楽天市場というカテゴリに対して、商品検索を行なっています。

商品検索を行うカテゴリを、特定していません

上記ソースコードでは、商品検索を行うカテゴリを場合分けして、特定していません。

例えば、楽天ブックス総合検索APIを使って、本という特定のカテゴリに対して商品検索する、という処理はありません。

もしも、商品検索を行うカテゴリを特定する場合は、上記ソースコードにおいてswitch文を使って、場合分けすることになります。

商品検索を行うカテゴリを場合分けするPHPソースコードについて、下書き。

public static function makeHTMLOfIchibaItemSearch(
    URLInfo $urlInfo,
    CommonRESTParameter $commonParameter,
    RESTParameter $restParameter,
    SearchOption $searchOption,
    ItemHTMLOption $itemHTMLOption
) {

中略

	switch ( 商品検索を行うカテゴリ ) {
		case 楽天市場 :

			楽天市場商品検索APIを使用する。
			楽天市場に対して商品検索を行い、楽天市場の「アフィリエイト商品のHTML」を作成する。

			break;

		case 楽天ブックス :

			楽天ブックス総合検索APIを使用する。
			楽天ブックスに対して商品検索を行い、楽天市場(楽天ブックス)の「アフィリエイト商品のHTML」を作成する。

			break;

		default :

			throw new IllegalArgumentException ( "無効な商品検索を行うカテゴリ" );
	}

以下省略

}

現在のところ、商品検索を行うカテゴリは、楽天市場だけです。
楽天ブックスというカテゴリに対して商品検索する、という処理を作成していません。

以上より、makeHTMLOfIchibaItemSearch()関数は、3行のプログラムコードとなっています。

今後、商品検索を行うカテゴリに対して、switch文を使って場合分けしないなら、
makeHTMLOfIchibaItemSearch()関数を削除できます。

3行のプログラムコードの処理は、他のクラスの関数内に移動できます。
RakutenAffiliateクラスのmakeHTML()関数内に移動できます。

3行のプログラムコードの処理を、RakutenAffiliateクラスのmakeHTML()関数内に移動したPHPソースコードについて、下書き。

class RakutenAffiliate
{

	public static function makeHTML(ShortcodeAttribute $shortcodeAttribute)
	{

中略

		$affiliateHTML;

		$operation = $searchOption->getOperation();
		switch ($operation) {
			case SearchParagraphUtils::ICHIBA_ITEM_SEARCH_OPERATION:

				// 現時点では、Operation="IchibaItemSearch"で、楽天市場商品をキーワード検索する処理だけ行う。
				$itemsHTMLInfoMaker = new RakutenItemsHTMLInfoMaker($commonParameter, $restParameter, $searchOption);
				$affiliateHTML = ItemSearchOperation::makeItemsHTML($urlInfo, $itemHTMLOption, $itemsHTMLInfoMaker);
				break;

			default:

				throw new IllegalArgumentException("無効なオペレーション:" . $operation);
		}

		return $affiliateHTML;
	}
}

※関連記事:キーワードによる商品検索で、楽天市場の「アフィリエイト商品のHTML」を作成する、IchibaItemSearchオペレーションで、楽天市場の「アフィリエイト商品のHTML」を作成する

楽天市場商品のHTMLに関する情報を作成するクラスについて、インスタンス変数を用意する

public static function makeHTMLOfIchibaItemSearch(
    URLInfo $urlInfo,
    CommonRESTParameter $commonParameter,
    RESTParameter $restParameter,
    SearchOption $searchOption,
    ItemHTMLOption $itemHTMLOption
) {

    $itemsHTMLInfoMaker = new RakutenItemsHTMLInfoMaker($commonParameter, $restParameter, $searchOption);

以下省略

}

RakutenItemsHTMLInfoMakerクラスは、楽天市場商品のHTMLに関する情報を作成するクラスです。

このRakutenItemsHTMLInfoMakerクラスには、ItemsHTMLInfoMakerインターフェースが適用されています。

ItemsHTMLInfoMakerインターフェースでは、以下の三つのメソッドを宣言しています。

ItemsHTMLInfoMakerインターフェースのメソッド宣言ItemsHTMLInfoMakerインターフェースのメソッドの機能
requestItemSearch()何かに対して商品検索を行い、「商品の検索結果」を得る。
makeItemArray()取得した「商品の検索結果」から、「当プラグイン用の商品情報の配列」を作成する。
makeUniqueText()キーワードによる商品検索の処理に対応する、一意な文字列を作成する。

一意な文字列は、「当プラグイン用の商品情報の配列」などをキャッシュに保存する際、そのキャッシュを識別する識別子を作成するために利用される。
ItemsHTMLInfoMakerインターフェース

よって、RakutenItemsHTMLInfoMakerクラスでは、上記の三つのメソッドを、楽天市場のアフィリエイト商品に関する処理に対応させて、実装することになります。

実装する必要があるメソッドメソッドの機能
requestItemSearch()楽天市場商品検索APIを使用して、楽天市場に対して商品検索を行い、「楽天市場商品の検索結果」を得る。
makeItemArray()取得した「楽天市場商品の検索結果」から、「当プラグイン用の商品情報の配列」作成する。
makeUniqueText()楽天市場における、キーワードによる商品検索の処理に対応する、一意な文字列を作成する。

一意な文字列は、「当プラグイン用の商品情報の配列」などをキャッシュに保存する際、そのキャッシュを識別する識別子を作成するために利用される。
RakutenItemsHTMLInfoMakerクラス

汎用的な「アフィリエイト商品のHTML」を作成する関数で、楽天市場の「アフィリエイト商品のHTML」を作成する

$itemsHTMLInfoMaker = new RakutenItemsHTMLInfoMaker($commonParameter, $restParameter, $searchOption);
$itemsHtml = ItemSearchOperation::makeItemsHTML($urlInfo, $itemHTMLOption, $itemsHTMLInfoMaker);

ItemSearchOperation::makeItemsHTML()関数は、汎用的な(一般的な)「アフィリエイト商品のHTML」を作成する関数です。

上記の関数は、楽天市場の「アフィリエイト商品のHTML」を作成する場合に、対応していません。

このような場合、

ItemsHTMLInfoMakerインターフェースを適用したRakutenItemsHTMLInfoMakerクラスを用意することで、
ItemSearchOperation::makeItemsHTML()関数を、使用できます。

そして、楽天市場の「アフィリエイト商品のHTML」を作成できます。

※関連記事:全ての検索カテゴリにおいて、キーワードによる商品検索をすることで、アマゾンの「アフィリエイト商品のHTML」を作成する、汎用的なメソッドを呼び出すために、ItemsHTMLInfoMakerインターフェースを利用する

KeywordSearchOperation.phpのソースコード

<?php


namespace goodsmemo\rakuten;

use goodsmemo\network\URLInfo;
use goodsmemo\rakuten\CommonRESTParameter;
use goodsmemo\rakuten\RESTParameter;
use goodsmemo\rakuten\SearchOption;
use goodsmemo\rakuten\RakutenItemsHTMLInfoMaker;
use goodsmemo\item\ItemSearchOperation;
use goodsmemo\item\html\ItemHTMLOption;

require_once GOODS_MEMO_DIR . "network/URLInfo.php";
require_once GOODS_MEMO_DIR . "rakuten/CommonRESTParameter.php";
require_once GOODS_MEMO_DIR . "rakuten/RESTParameter.php";
require_once GOODS_MEMO_DIR . "rakuten/SearchOption.php";
require_once GOODS_MEMO_DIR . "rakuten/RakutenItemsHTMLInfoMaker.php";
require_once GOODS_MEMO_DIR . "item/ItemSearchOperation.php";
require_once GOODS_MEMO_DIR . "item/html/ItemHTMLOption.php";

class KeywordSearchOperation
{

    public static function makeHTMLOfIchibaItemSearch(
        URLInfo $urlInfo,
        CommonRESTParameter $commonParameter,
        RESTParameter $restParameter,
        SearchOption $searchOption,
        ItemHTMLOption $itemHTMLOption
    ) {

        $itemsHTMLInfoMaker = new RakutenItemsHTMLInfoMaker($commonParameter, $restParameter, $searchOption);
        $itemsHtml = ItemSearchOperation::makeItemsHTML($urlInfo, $itemHTMLOption, $itemsHTMLInfoMaker);
        return $itemsHtml;
    }
}