Facebook meets ZendFramework

Im Rahmen des Hackathon von HolidayCheck haben wir uns mit Facebook beschäftigt.
Ich hab mir mal angeschaut, wie sich das ganze sauber mit ZendFramework integrieren lässt und dann ne Klassenstruktur für Datenobjekte der Facebook Objekte geschrieben.

Zuerst habe ich mir die aktuelle ZF-Version runter gezogen und mit ZF-Tool eine Dateistruktur aufgebaut. Dann ZF in den library Ordner kopiert und einen Facebook Ordner in library angelegt.
Der nächste Schritt war, dass ich mir das FB-SDK mal angeschaut habe. Leider ist das Naming nicht ZF konform und auch sind 2 Klassen in einer Datei (facebook.php).
Also habe ich die Datei trotzdem da rein gelegt und eine ZF konforme Facebook_Api-Klasse erzeugt, die die facebook.php inkludiert und von der Facebook Klasse erbt. Diese lässt sich dann auch sauber per Autoloader laden, wenn der Namespace in der application.ini hinzugefügt wurde. Darüber hinaus hab ich noch den Konstruktor angepasst, dass der als Parameter keinen Array, sondern Zend_Config ist. Und dann natürlich noch fix eine config Datei erstellt.
Bei der Exception, die in der facebook.php ist, hab ich ebenfalls eine neue Datei angelegt, die die facebook.php inkludiert.
Zum erzeugen der Daten-Objekte gibt es dann noch eine Factory-Klasse und natürlich dann die einzelnen Datenobjekte. Besonderheit ist das SimpleObject, welches quasi jegliche Art von Daten entgegen nimmt und auch als Liste funktioniert. Ansonsten ist das ganze sehr generisch, d.h. Stand jetzt haben die Daten-Objekte keine echten Eigenschaften, sondern die hängen von den Daten ab, die rein gegeben werden.

In nem Controller sieht das dann ungefähr so aus:

$facebook = new Facebook_Api(new Zend_Config_Xml(APPLICATION_PATH . '/configs/facebook.xml', APPLICATION_ENV));
if(!$facebook->getSession()) {
echo 'Login';
exit();
}
$fo = Facebook_Object_Factory::factory(Facebook_Object_Factory::TYPE_USER, $facebook->api('/me'));
Zend_Debug::dump($fo->convertToZendDate($fo->getUpdatedTime()));

Noch offen ist jetzt noch das Implementieren der echten Getter und Setter in den Datenobjekten, Validieren und Konvertieren von Daten… Naja, mal sehen. 😉

Hier findet ihr die Sourcen. Freu mich über Feedback! Wenn Interesse an Weiterentwicklung besteht, mach ich das ganze auch gern in öffentlichen Repository. Einfach Bescheid sagen!

GD Star Rating
loading...

Kommentar verfassen