5

Blogger API for PHP を動作させるのに問題があります。

私が必要としているのは、新しいブログ投稿を自分のブロガー アカウントに投稿できるようにすることです。私が使用しているコードは、こちらの Google API ページから取得したものです: http://code.google.com/intl/nl/apis/blogger/docs/1.0/developers_guide_php.html

これが私のコードです:

<?
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_Query');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');

$user = 'name@example.com';
$pass = 'password';
$service = 'blogger';

$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service, null,
        Zend_Gdata_ClientLogin::DEFAULT_SOURCE, null, null, 
        Zend_Gdata_ClientLogin::CLIENTLOGIN_URI, 'GOOGLE');
$gdClient = new Zend_Gdata($client); 

$blogID = '7973737751295446679';

function createPublishedPost($title='Hello, world!', $content='I am blogging on the internet.')
{
  $uri = 'http://www.blogger.com/feeds/' . $blogID . '/posts/default';
  $entry = $gdClient->newEntry();
  $entry->title = $gdClient->newTitle($title);
  $entry->content = $gdClient->newContent($content);
  $entry->content->setType('text');

  $createdPost = $gdClient->insertEntry($entry, $uri);
  $idText = split('-', $createdPost->id->text);
  $newPostID = $idText[2]; 

  return $newPostID; 
}

createPublishedPost();
?>

私が得ているエラーは、「致命的なエラー: 21 行目の C:\xampp\htdocs\HelloWorld\blogger2.php の非オブジェクトでメンバー関数 newEntry() を呼び出す」です。

誰かが私を助けたり、PHP を使用してブロガーに投稿する方法の実用的なコード サンプルを教えてくれますか?

4

2 に答える 2

6

あなたの$gdClient変数は関数の外側で無力化されcreatePublishedPostます:

$gdClient = new Zend_Gdata($client); 

関数内では、関数外で定義された変数はデフォルトでは存在しません。
それについては、マニュアルの変数スコープのページをご覧ください。

これは$gdClient、関数内に存在しないことを意味します。したがって、それはnull; そのため、オブジェクトではありません。これは、表示されるエラー メッセージを説明しています。


自分で確認するには、次を使用できます

var_dump($gdClient);

関数の最初に: それがどんな種類のデータであるかを見ることができます。使用したいクラスのインスタンスでない場合は、良い兆候ではありません;-)


次のいずれかを実行できます。

  • その変数をパラメーターとしてcreatePublishedPost関数に渡します
  • またはglobal関数内で宣言します(関数は変数を外部で宣言されているように「見る」ことができます)

最初の解決策はおそらく最もクリーンな解決策だと思います;-)


補足として、レベルを構成したい場合があります(error_reporting参照)。そのため、E_NOTICE宣言されていない変数を使用しているときに が 取得されます。まだ有効になっていない場合は、開発マシンで
有効にしたい- 致命的なエラーメッセージが表示されたので、有効になっているようですdisplay_errors

最初は少し面倒に思えるかもしれませんが、慣れると本当に素晴らしいです: その種のものをはるかに迅速に検出できます ;-) また
、変数名のタイプミスを検出するのにも役立ちます ^^
コードをよりクリーンにします。

于 2009-08-16T17:19:43.753 に答える
1

を関数本体に移動する$gdClientと何かが修正されましたが、 も$blogID関数本体に移動する必要があります。

于 2011-04-12T22:45:41.667 に答える