2009-08-16 8 views
5

Ich habe ein Problem mit der Blogger-API für PHP zu arbeiten.Veröffentlichen in Blogger mit PHP

Was ich brauche, ist in der Lage, einen neuen Blogpost zu meinem Bloggeraccount zu schreiben. Der Code, den ich verwende, wird von der Google API Seite genommen hier: http://code.google.com/intl/nl/apis/blogger/docs/1.0/developers_guide_php.html

Hier ist mein Code:

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

$user = '[email protected]'; 
$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(); 
?> 

Der Fehler Ich erhalte ist ‚Fatal error: Call auf eine Elementfunktion newEntry() auf einem Nicht-Objekt in C: \ xampp \ htdocs \ HelloWorld \ blogger2.php in Zeile 21 '

Kann mir jemand helfen oder mir ein funktionierendes Codebeispiel wie man Blogger mit PHP schreiben?

Antwort

6

Ihre $gdClient Variable außerhalb der createPublishedPost Funktion intanciated:

$gdClient = new Zend_Gdata($client); 

Innerhalb einer Funktion, die Variablen, die außerhalb davon definiert wurden standardmäßig nicht vorhanden sind.
Darüber können Sie einen Blick auf die Variable scope Seite des Handbuchs werfen.

Das bedeutet $gdClient existiert nicht innerhalb der Funktion; daher ist es null; also kein Objekt - was die Fehlermeldung erklärt, die Sie erhalten.


Um zu überprüfen, dass selbst, Sie

var_dump($gdClient); 

am Anfang der Funktion verwenden können: es Ihnen, welche Art von Daten zu sehen, wird es ermöglichen, ist; wenn es nicht eine Instanz der Klasse ist man bereit zu verwenden sind, ist es kein gutes Zeichen ;-)


Vielleicht möchten Sie entweder:

  • geben, die Variable als Parameter an die createPublishedPost Funktion
  • oder erklären ihn als global innerhalb der Funktion (so kann die Funktion "sehen", die Variable als außerhalb erklärt)

Die erste Lösung ist wahrscheinlich die sauberste, denke ich ;-)


Als Nebenbemerkung, möchten Sie vielleicht Ihre error_reporting Ebene (see also) konfigurieren, so dass Sie einen E_NOTICE erhalten, wenn Sie eine Variable verwenden, das ist nicht deklariert - in diesem Fall hättest du zum Beispiel einen bekommen ;-)
Du könntest auch display_errors aktivieren, auf deinem Entwicklungsrechner, wenn es nicht schon läuft - scheint so zu sein, wie du es bekommen hast Fatal Fehlermeldung

Es mag am Anfang ein bisschen nervig, aber, sobald Sie uns bekommen ed, es ist wirklich toll: erlauben Sie, diese Art von Sachen viel schneller zu erkennen ;-)
Und es hilft auch Tippfehler in Variablennamen zu finden ^^
Und es macht Sie Weg Reiniger!

+0

Das war's! Danke Kumpel! – Pmarcoen

1

Verschieben der $gdClient an die Funktion Körper etwas behoben, aber Sie müssen auch die $blogID in den Funktionskörper verschieben.

Verwandte Themen