2

私は現在、複数のBigCommerceストアをループする必要があるWebアプリを作成しています。残念ながら、BigCommerce APIを使用すると、ループすることができません。

GitHubの最新バージョンのBCAPIPHPライブラリ(名前空間を使用するライブラリ)を使用しています。以下のコードを参照してください。

require_once( 'autoload.php' );

use Bigcommerce\Api\Client as Bigcommerce;

$stores[1]['url'] = 'https://www.store1.co.uk';
$stores[1]['api_key'] = 'e01e16e6b51d70f6de213fd7445dc0f4';
$stores[1]['user'] = 'admin';
$stores[2]['url'] = 'https://www.store2.co.uk';
$stores[2]['api_key'] = '7b8b934e157eac734b7f7b4311b7cd81';
$stores[2]['user'] = 'admin';


foreach ( $stores as $store ){

    echo $store['url'] . ' - ';

    Bigcommerce::configure(array(
        'store_url' => $store['url'],
        'username'  => $store['user'],
        'api_key'   => $store['api_key'],
    ));

    Bigcommerce::setCipher('RC4-SHA');
    Bigcommerce::verifyPeer( false );

    $products = Bigcommerce::getProductsCount();

    echo $products . ' products<br />;

}

期待される出力は次のとおりです。

https://www.store1.co.uk - 301 products
https://www.store2.co.uk - 235 products

私が実際に得ているのは:

https://www.store1.co.uk - 301 products
https://www.store2.co.uk -

私はこれまでにAPIを数回使用しましたが、プロジェクトごとに一度に1つのストアにしか接続していません。foreachループの次のストアに接続する前に、接続などを閉じる必要がありますか?

すべての助けに大いに感謝します!

4

1 に答える 1

2

BigcommercePHPライブラリの次のコードを見てください。

/**
     * Get an instance of the HTTP connection object. Initializes
     * the connection if it is not already active.
     *
     * @return Connection
     */
    private static function connection()
    {
        if (!self::$connection) {
            self::$connection = new Connection();
            self::$connection->authenticate(self::$username, self::$api_key);
        }

        return self::$connection;
    }

これはClient.phpからのものです-https ://github.com/bigcommerce/bigcommerce-api-php/blob/master/src/Bigcommerce/Api/Client.php

あなたがしていることを見ると、それは機能しません。なぜなら、既存の接続はライブラリに新しい値を無視させるからです。新しいストア接続は、初めて設定するときにのみ形成されます。

特別なユースケースの簡単な修正は、既存の接続に関係なく、上記の関数をオーバーライドして新しいストアに再接続することです。

これがうまくいくことを願っています!

于 2013-03-21T19:01:54.743 に答える