3

私は自分のコードでこの関数を使おうとしています:https ://developers.google.com/drive/v2/reference/files/list

この下で:

/**
 * Retrieve a list of File resources.
 *
 * @param apiDriveService $service Drive API service instance.
 * @return Array List of File resources.
 */
function retrieveAllFiles($service) {
  $result = array();
  $pageToken = NULL;

  do {
    try {
      $parameters = array();
      if ($pageToken) {
        $parameters['pageToken'] = $pageToken;
      }
      $files = $service->files->listFiles($parameters);

      array_merge($result, $files->getItems()); // <---- Exception is throw there !
      $pageToken = $files->getNextPageToken();
    } catch (Exception $e) {
      print "An error occurred: " . $e->getMessage();
      $pageToken = NULL;
    }
  } while ($pageToken);
  return $result;
}

しかし、私はこのエラーが発生しました:

致命的なエラー:C:\ Program Files(x86)\ EasyPHP-5.3.6.1 \ www \ worksheet \ CPS \ class \ controller \ CtrlGoogleDrive.phpの115行目の非オブジェクトでメンバー関数getItems()を呼び出す

あなたの配列は空のように見えるかもしれませんが、そうであるべきではありません:

Array
(
    [kind] => drive#fileList
    [etag] => "WtRjAPZWbDA7_fkFjc5ojsEvE7I/lmSsH-kN3I4LpwShGKUKAM7cxbI"
    [selfLink] => https://www.googleapis.com/drive/v2/files
    [items] => Array
        (
        )

)
4

1 に答える 1

9

PHPクライアントライブラリは2つの方法で動作し、オブジェクトまたは連想配列を返します。後者がデフォルトです。

ドキュメントの例では、ライブラリがオブジェクトを返すことを想定しています。そうでない場合は、次の2つの呼び出しを置き換える必要があります。

$files->getItems()
$files->getNextPageToken()

代わりに連想配列を使用する対応する呼び出しを使用して:

$files['items']
$files['nextPageToken']

さらに良いことに、設定することで常にオブジェクトを返すようにライブラリを構成できます

$apiConfig['use_objects'] = true;

config.phpその他の構成オプションについては、ファイルを確認してください。

http://code.google.com/p/google-api-php-client/source/browse/trunk/src/config.php

于 2012-08-01T18:26:01.190 に答える