我在使用Blogger API for PHP工作时遇到了问题.
我需要的是能够在我的bloggeraccount上发布一个新的博客帖子.我正在使用的代码来自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();
?>
Run Code Online (Sandbox Code Playgroud)
我得到的错误是'致命错误:在第21行的C:\ xampp\htdocs\HelloWorld\blogger2.php中的非对象上调用成员函数newEntry()'
任何人都可以帮助我或给我一个如何使用PHP发布到博客的工作代码示例?
您的$gdClient变量在createPublishedPost函数外部进行了附加:
$gdClient = new Zend_Gdata($client);
Run Code Online (Sandbox Code Playgroud)
在函数内部,默认情况下不存在已在其外部定义的变量.
关于这一点,您可以查看本手册的" 变量范围"页面.
这意味着$gdClient函数内部不存在; 因此,它是null; 所以,不是一个对象 - 它解释了你得到的错误信息.
要自己检查一下,你可以使用
var_dump($gdClient);
Run Code Online (Sandbox Code Playgroud)
在函数的开头:它将允许您查看它是什么类型的数据; 如果它不是你愿意使用的课程实例,那不是一个好兆头;-)
你可能想要:
createPublishedPost函数global函数内部(因此函数可以"看到"外部声明的变量)第一个解决方案可能是最干净的,我认为;-)
作为旁注,您可能想要配置您的error_reporting级别(另请参阅),以便E_NOTICE在使用未声明的变量时得到- 在这种情况下,您应该得到一个,例如;-)
您也可能想要display_errors在您的开发机器上启用,如果它还没有打开 - 似乎是,因为您收到了致命错误消息
它在开始时可能看起来有点烦人,但是,一旦你习惯它,它真的很棒:允许更快地检测那种东西;-)
它还有助于检测变量名称中的错别字^^
它让你的代码更干净!