Índice
As "Google Data APIs" disponibilizam interfaces programáticas a alguns dos serviços online do Google. As aplicações cliente submetem consultas e dados via HTTP, e recuperam resultados. O componente Zend_Gdata é uma interface PHP 5 para acesso aos dados do Google via PHP.
Veja http://code.google.com/apis/gdata/ para mais informações sobre a "Google Data API".
Dentre os serviços acessíveis por Zend_Gdata estão inclusos os seguintes:
Google Base oferece uma ferramenta de busca online para produtos, empregos, eventos, anúncios pessoais e outros tipos de registros. As pessoas postam ítens, descrevendo-os com os atributos comumente nomeados.
Google Blogger é um provedor popular de "push-button publishing" e sindicação.
Google Calendar é uma ferramenta de colaboração e calendário online.
Google CodeSearch permite a você pesquisar por codigo fonte público em diferentes projetos.
Serviços não suportados | |
---|---|
Google Data API suporta também Google Spreadsheets, mas Zend_Gdata não provê uma classe auxiliar para Spreadsheets neste release. Zend_Gdata não implementa interfaces para nenhum outro serviço do Google, como Search, Gmail, Translation, ou Maps. Somente os serviços que suportam a Google Data API são suportados. |
A maioria dos serviços do Google Data exigem que as aplicações cliente autentiquem-se em um servidor do Google para poderem acessar dados privados, salvar ou deletar informações. Existem duas implementações de autenticação para o Google Data: AuthSub e ClientLogin. Zend_Gdata disponibiliza classes de interface para ambos os métodos.
Os demais tipos de consultas aos serviços do Google Data não requerem autenticação.
Zend_Gdata faz uso de Zend_Feed e Zend_Http_Client para enviar requisições ao google.com e recuperar resultados. A maioria das respostas às requisições são retornadas como objetos Zend_Feed object no formato de um feed Atom ou RSS.
Zend_Gdata assume que sua aplicação PHP está rodando em um host com conexão direta à internet. O cliente Zend_Gdata funciona contatando os servidores do Google Data.
Crie um novo objeto da classe Zend_Gdata ou uma das subclasses disponíveis que ofereça métodos auxiliares com comportamento inerente ao serviço.
O único parâmetro opcional passado para o construtor de Zend_Gdata é uma instância de Zend_Http_Client. Se você omitir este parâmetro, Zend_Gdata cria um objeto Zend_Http_Client default. Especificar um objeto Zend_Http_Client permite a passagem de opções de configuração para o objeto cliente.
<?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); ?>
Consulte também, nas seções sobre autenticação, sobre como criar um objeto Zend_Http_Client autenticado.
Você pode customizar as consultas com Zend_Gdata especificando parâmetros. Certos parâmetros são aplicávies somente a determinados serviçoes do Google Data. Estes parâmetros estão documentados nas seções anteriores, para cada serviço. Alguns parâmetros são comuns aos vários serviços do Google Data. Estes parâmetros estão descritos abaixo:
O parâmetro alt
especifica o tipo de "feed". O
valores para o parâmetro podem ser: atom
,
rss
, json
, ou json-in-script
.
Se omitido, o valor padrão será atom
.
Defina o valor deste parâmetro com a função
setAlt()
.
O parâmetro maxResults
limita o número de registros
em um "feed". O valor padrão é um inteiro. O número de registros
retornados pelo "feed" não deverá exceder este valor.
Defina o valor deste parâmetro com a função
setMaxResults()
.
O parâmetro startIndex
especifica o número de ordem
do primeiro registro retornado no "feed". Registros anteriores a este
índice serão ignorados.
Defina o valor deste parâmetro com a função
setStartIndex()
.
Os parâmetros updatedMin
e updatedMax
especificam limites para a data dos registros. Registros com datas
anteriores a updatedMin
, e posteriores a
updatedMax
serão ignorados.
Você pode empregar timestamps numéricas, ou uma variedade de strings representativas de data/hora como valor para estes parâmetros.
Defina o valor deste parâmetro com as funções
setUpdatedMin()
e setUpdatedMax()
.
Para cada função set
existe uma respectiva função
get
.
<?php $gdata = new Zend_Gdata(); $gdata->setMaxResults(10); echo $gdata->getMaxResults(); // returns 10 ?>
A classe Zend_Gdata implementa também métodos "magicos" para setar
ou ler valores, desta forma, podemos usar o nome do parâmetro como membro
virtual de uma classe. Podemos usar isset()
e
unset()
nestes membros virtuais.
<?php $gdata = new Zend_Gdata(); $gdata->maxResults = 10; echo $gdata->maxResults; // returns 10 echo isset($gdata->maxResults); // returns true unset($gdata->maxResults); // clears parameter ?>
Podemos limpar todos os parâmetros com a função
resetParameters()
. Isto é particularmente útil quando
queremos reutilizar um objeto Zend_Gdata para múltiplas consultas.
<?php $gdata = new Zend_Gdata(); $gdata->maxResults = 10; // ...get feed... $gdata->resetParameters(); // clears all parameters // ...get a different feed... ?>
Use a função getFeed()
para recuperar um "feed" de um
determinado URI. Esta função retorna um objeto da classe 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); ?>
Consulte a documentação de Zend_Feed para mais informações sobre sua utilização.
Consulte as seções anteriores sobre as funções especiais de cada classe auxiliar para serviços do Google Data. Estas funções auxiliam na obtenção de "feeds" selecionando a URI mais apropriada de cada respectivo serviço.
O objeto Zend_Gdata possui uma função post()
usada para
enviar dados a serem gravados em novos registros do serviço Google
Data.
É de responsabilidade do programador a construção de uma string contendo a estrutura XML correta para um registro do respectivo serviço Google Data que o mesmo estiver utilizando. Podemos usar bibliotecas de classe PHP tais como 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); ?>
Para postar registros, devemos usar um objeto Zend_Http_Client autenticado que criamos com as classes Zend_Gdata_AuthSub ou Zend_Gdata_ClientLogin.
O objeto Zend_Gdata possui uma função delete()
usada
para remover registros em serviços do Google Data. Passe o valor
<id>
do registro de um "feed" para o método
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); } ?>
Você pode usar também o método delete()
sem um objeto
"feed", se você passar um URI que identifique corretamente um
registro.
<?php $gdata = new Zend_Gdata($authenticatedHttpClient); $uri = 'http://www.google.com/calendar/feeds/default/private/entryID'; $gdata->delete($uri); ?>
No exemplo acima, substitua "entryID
" com o valor ID do
registro que você quer deletar.
Para deletar registros, você deve usar um objeto Zend_Http_Client autenticado que você criou usando as classes Zend_Gdata_AuthSub ou Zend_Gdata_ClientLogin.