Table des matières
Les API Google Data fournissent une interface de programmation pour accéder aux differents services en ligne de Google. Les applications clientes envoyent des requetes et des données via HTTP, et récupères les resultats. Le composant Zend_Gdata est une interface PHP 5 pour accéder à Google Data depuis PHP.
Voir http://code.google.com/apis/gdata/ pour plus d'informations sur les API Google Data
Parmis les services accessibles à l'aide de Zend_Gdata on trouve :
Google Base Fournissant un moteur de recherche pour produits en ligne, emplois, événements, publiciés personnels, et d'autres type de données. Les personnes déposent des Items et les décrivent à l'aide d'attributs courants.
Google Blogger Est un outil populaire de Blog.
Google Calendar Est un calendrier en ligne et un outil de collaboration.
Google CodeSearch Vous donne la possibilité de rechercher des codes sources publiques dans de nombreux projets.
Services non supportés | |
---|---|
Les API Google Data proposent aussi Google Spreadsheets, mais Zend_Gdata ne fourni pas de class d'aide pour spreadsheets dans sa version actuelle. Zend_Gdata ne fourni pas non plus d'interface pour les autres services Google, comme la recherche (Google Search), Gmail, le service de traduction (Google Translate), ou le sercie de cartographie (Google Maps). Seul les services supportants les API Google Data sont implémentés. |
La pluparts des services Google Data requièrent l'authentification de l'application cliente auprès du serveur Google avant d'accéder aux données privés, de sauvegarder des données ou d'en supprimer. Il y a deux implémentations de l'authentification sur Google Data : AuthSub et ClientLogin. Zend-Gdata fourni des interfaces (Classes) pour chacunes de ces methodes.
La plupart des autres types de rêquetes au travers du service Google Data ne requièrent pas d'authentification.
Zend_Gdata utilise Zend_Feed et Zend_Http_Client pour envoyer des données à google.com et récupérer les resultats. The response to most La plupart des réponses sont retournés sous la forme d'objets Zend_Feed au format Atom ou fil RSS.
L'utilisation de Zend_Gdata nécesite que l'hote sur lequel votre application PHP tourne ait accès au réseau Internet. Le client Zend_Gdata procède en contactant les serveurs Google Data.
Créer un nouvel objet de la classe Zend_Gdata ou d'une des classes dérivés disponibles qui offrent des methodes spécifiques pour chaques services.
Le seul paramètre optionnel au constructeur de Zend_Gdata est une instance de Zend_Http_Client. Si vous ne passez pas ce paramètre, Zend_Gdata créera un nouvel objet Zend_Http_Client. Instancier un objet Zend_Http_Client vous permettra de passer des options de configuration à ce dernier.
<?php require_once 'Zend/Gdata.php'; require_once 'Zend/Http/Client.php'; $client = new Zend_Http_Client(); $client->setConfig( ...options... ); $gdata = new Zend_Gdata($client); ?>
Voir aussi la partie sur l'authentification pour les méthodes de création d'un objet Zend_Http_Client authentifié.
vos pouvez spécifier des paramètres avec Zend_Gdata pour personaliser vos requêtes. Certain paramètres s'appliquent uniquement sur certain services Google Data. Ces paramètres seront documentés plus tards dans les paragraphes des services correspondants. Certain paramètres agisent de façon générique sur tout les services Google Data accessibles. Voici leur description :
le paramètre alt
spécifie le type de fil.
le paramètre peux prendre pour valeur :
atom
,
rss
,
json
,
ou json-in-script
.
si vous ne spécifiez pas de paramètre, le type par défaut est atom
.
Renseignez ce paramètre à l'aide de la fonction setAlt()
.
Le paramètre maxResults
limitant le nombr d'entrées du fil RSS ou Atom. Ce paramètre est un entier. Le nombre d'entrées retrounés n'exèderons pas cette valeur
Renseignez ce paramètre à l'aide de la fonction setMaxResults()
.
Le paramètre startIndex
définit le rang du premier paramètre à renvoyer.
Les entrées qui le précédent sont ignorés.
Renseignez ce paramètre à l'aide de la fonction setStartIndex()
.
Les paramètres updatedMin
et updatedMax
définissent des limites sur les date des entrées.
Si vous spécifiez un valeur pour updatedMin
,
Aucune entrée qui à été mise à jour plus tôt que la date spécifiée ne sera récupérée.
De la meme façon, aucune entrée qui à été mise à jour après la date updatedMax
ne sera remontée.
Vous pouvez utiliser des timestamps ou des dates/heure sous forme de chaine de caractères comme valeurs pour ces paramètres.
Renseignez ces paramètres à l'aide des fonctions setUpdatedMin()
et setUpdatedMax()
.
Il existe une fonction get
pour chaques fonctions
set
.
<?php $gdata = new Zend_Gdata(); $gdata->setMaxResults(10); echo $gdata->getMaxResults(); // returns 10 ?>
Zend_Gdata implémente aussi des méthodes getter et setter "magic", vous donnant ainsi la possibilité d'utiliser les noms de ces paramètres en tant que membres virtuels de la classe.
Vous pouvez donc utiliser
isset()
et unset()
sur ces membres virtuels.
<?php $gdata = new Zend_Gdata(); $gdata->maxResults = 10; echo $gdata->maxResults; // retourne 10 echo isset($gdata->maxResults); // renvoi "vrai" unset($gdata->maxResults); // efface le paramètre ?>
Vous pouvez effacer tous les paramètres en une fois en utilisant la fonction resetParameters()
. Ceci est utile si vous réutilisez un objetc Zend_Gdata pour différentes requêtes.
<?php $gdata = new Zend_Gdata(); $gdata->maxResults = 10; // ...récupération des entrées... $gdata->resetParameters(); // efface tous les paramètre // ...récupérez de nouvelles entrées... ?>
Utilisez la fonction getFeed()
pour récupérer le fil d'une URI spécifiée.
Cete fonction retourne un objet de type Zend_Feed.
<?php $gdata = new Zend_Gdata(); $gdata->setQuery('digital camera'); $gdata->setMaxResults(10); $uri = 'http://www.google.com/base/feeds/snippets' . $gdata->getQueryString(); $feed = $gdata->getFeed($uri); ?>
Voir la documentation de Zend_Feed pour plus d'informations sur l'utilisation de cet objet.
Voir les autres charpitres pour les fonctions spécifiques à certains services Google Data. Ces fonctions vous aide à récupérer les données d'un service particulier à partir de son URI.
L'objet Zend_GData possède une fonction post()
avec laquelle vous pouvez uploader de nouvelles entrées dans les services Google Data.
Il est à votre charge de construire une chaine XML syntaxiquement et stucturellement correcte pour une entrée d'un service donné. Vous pouvez pour cela vous aider de librairies PHP comme DOM XML ou SimpleXML.
<?php $gdata = new Zend_Gdata($authenticatedHttpClient); $xmlString = <<<XML <entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category> <title type='text'>Tennis with Beth</title> <content type='text'>Meet for a quick lesson.</content> <author> <name>Jo March</name> <email>jo@gmail.com</email> </author> <gd:transparency value='http://schemas.google.com/g/2005#event.opaque'> </gd:transparency> <gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'> </gd:eventStatus> <gd:where valueString='Rolling Lawn Courts'></gd:where> <gd:when startTime='2006-04-17T15:00:00.000Z' endTime='2006-04-17T17:00:00.000Z'></gd:when> </entry> XML; $xml = new SimpleXMLElement($xmlString); $myCalendar = 'http://www.google.com/calendar/feeds/default/private/full'; $gdata->post($xml->asXML(), $myCalendar); ?>
Pour transférer des données, vous devze utiliser un objet Zend_Http_Client authentifié que vous aurez créer en utilisant les classes Zend_Gdata_AuthSub ou Zend_Gdata_ClientLogin.
L'objet Zend_Gdata possède la fonction delete()
avec laquelle vous pouvez supprimer des entrées sur les services Google Data. Pour cela il faut passer l'identifiant <id>
d'une entrée à la methode delete()
.
<?php $gdata = new Zend_Gdata($authenticatedHttpClient); // a Google Data feed $feedUri = ...; $feed = $gdata->getFeed($feedUri); foreach ($feed as $feedEntry) { // extract the <id> element $id = $feedEntry->id(); $gdata->delete($id); } ?>
Vous pouvez aussi utiliser la methode delete()
sans identifiant du moment que vous lui passez une URI correcte identifiant une entrée.
<?php $gdata = new Zend_Gdata($authenticatedHttpClient); $uri = 'http://www.google.com/calendar/feeds/default/private/entryID'; $gdata->delete($uri); ?>
Dans l'exemple précédent, remplacez "entryID
" par l'identifiant de l'entrée que vous voulez supprimer.
Pour supprimer des entrées, vous devez utiliser un objet Zend_Http_Client authentifié que vous aurez céer à l'aide d'une des classes Zend_Gdata_AuthSub ou Zend_Gdata_ClientLogin.