首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP发布到Blogger

使用PHP发布到Blogger
EN

Stack Overflow用户
提问于 2009-08-16 17:16:05
回答 2查看 7K关注 0票数 5

我在使用PHP的Blogger API时遇到了一个问题。

我需要的是能够发布一个新的博客帖子到我的博客帐户。我使用的代码取自Google API页面:http://code.google.com/intl/nl/apis/blogger/docs/1.0/developers_guide_php.html

下面是我的代码:

代码语言:javascript
复制
<?
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();
?>

我得到的错误是‘致命错误:在C:\xampp\htdocs\HelloWorld\blogger2.php第21行的非对象上调用成员函数newEntry()。’

有没有人可以帮我,或者给我一个如何使用PHP发布到blogger的工作代码样本?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-16 17:19:44

您的$gdClient变量在createPublishedPost函数外部使用:

代码语言:javascript
复制
$gdClient = new Zend_Gdata($client); 

在函数内部,默认情况下,在函数外部定义的变量不存在。

关于这一点,您可以查看手册的Variable scope页面。

这意味着$gdClient不存在于函数内部;因此,它是null;因此,它不是一个对象--这解释了您得到的错误消息。

要自己检查,您可以使用

代码语言:javascript
复制
var_dump($gdClient);

在函数的开头:它将允许您查看它是哪种类型的数据;如果它不是您愿意使用的类的实例,则不是一个好兆头;-)

您可能需要执行以下任一操作:

  • 将该变量作为参数传递给createPublishedPost function
  • ,或者在函数内部将其声明为global (这样该函数就可以“看到”在外部声明的变量)

我认为第一种解决方案可能是最干净的;-)

顺便说一句,您可能希望配置error_reporting级别(see also),以便在使用未声明的变量时获得E_NOTICE --在本例中,您应该已经获得了一个变量;-)

您可能还希望在开发计算机上启用 (如果尚未启用) --看起来是启用了,因为您收到了致命错误消息

一开始可能看起来有点烦人,但是,一旦你习惯了它,它真的很棒:允许更快地检测到这类东西;-)

它还有助于检测变量名中的拼写错误^^

它会让你的代码变得更干净!

票数 6
EN

Stack Overflow用户

发布于 2011-04-13 06:45:42

$gdClient移动到函数体修复了一些问题,但您还必须将$blogID移动到函数体中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1284808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档