Das Zend Framework enthält viele praktische Schnittstellen zu bekannten APIs:
- Google Base (Zend_Gdata)
- Open ID (Zend_OpenId)
- Zend_Service mit:
- Zend_Service_Akismet
- Zend_Service_Amazon
- Zend_Service_Amazon_EC2
- Zend_Service_Amazon_S3
- Zend_Service_Audioscrobbler
- Zend_Service_Delicious
- Zend_Service_DeveloperGarden
- Zend_Service_Ebay
- Zend_Service_Ebay_Finding
- Zend_Service_Flickr
- Zend_Service_LiveDocx
- Zend_Service_Nirvanix
- Zend_Service_ReCaptcha
- Zend_Service_ShortUrl
- Zend_Service_Simpy
- Zend_Service_SlideShare
- Zend_Service_StrikeIron
- Zend_Service_Technorati
- Zend_Service_Twitter
- Zend_Service_WindowsAzure
- Zend_Service_Yahoo
Eine komplette Liste gibt es hier.
Solche APIs können folgender Maßen eingebunden werden ohne die ganze Webseite als Zend-Projekt programmieren zu müssen (am Bsp. von GBase: Google Base):
set_include_path(get_include_path()
.':/var/www/Zend/'
.':/var/www/'
);
require_once '../functions.php';
require_once 'Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);
class GoogleShopping {
private $service = null;
public function __construct()
{
// Parameters for ClientAuth authentication
$service = Zend_Gdata_Gbase::AUTH_SERVICE_NAME;
$user = "foo";
$pass = "doo";
// Create an authenticated HTTP client
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
// Create an instance of the Base service
try
{
$this->service = new Zend_Gdata_Gbase($client);
$this->addProduct();
$this->queryFeed();
}
catch (Exception $exception)
{
$this->printStacktrace($exception);
}
}
private function printStacktrace($exception)
{
$msg = $exception->getMessage();
$trace = $exception->getTraceAsString();
echo "<div>Error: $msg<p><pre>$trace</pre></p></div>";
}
private function addProduct()
{
$newEntry = $this->service->newItemEntry();
// Add title
$title = "PHP Developer Handbook";
$newEntry->title = $this->service->newTitle(trim($title));
// Add some content
$content = "Essential handbook for PHP developers.";
$newEntry->content = $this->service->newContent($content);
$newEntry->content->type = 'text';
// Define product type
$itemType = "Products";
$newEntry->itemType = $itemType;
// Add item specific attributes
$newEntry->addGbaseAttribute("product_type", "book", "text");
$newEntry->addGbaseAttribute("price", "12.99 USD", "floatUnit");
$newEntry->addGbaseAttribute("quantity", "10", "int");
$newEntry->addGbaseAttribute("weight", "2.2 lbs", "numberUnit");
$newEntry->addGbaseAttribute("condition", "New", "text");
$newEntry->addGbaseAttribute("author", "John Doe", "text");
$newEntry->addGbaseAttribute("edition", "First Edition", "text");
$newEntry->addGbaseAttribute("pages", "253", "number");
$newEntry->addGbaseAttribute("publisher", "My Press", "text");
$newEntry->addGbaseAttribute("year", "2007", "number");
$newEntry->addGbaseAttribute("payment_accepted", "Google Checkout", "text");
$dryRun = true;
$createdEntry = $this->service->insertGbaseItem($newEntry, $dryRun);
}
private function queryFeed()
{
$query = $this->service->newItemQuery();
$query->setBq('[title:Programming]');
$query->setOrderBy('modification_time');
$query->setSortOrder('descending');
$query->setMaxResults('5');
$feed = $this->service->getGbaseItemFeed($query);
$this->displayFeed($feed);
}
private function displayFeed($feed)
{
foreach ($feed->entries as $entry) {
// Get all attributes and print out the name and text value of each
// attribute
$baseAttributes = $entry->getGbaseAttributes();
foreach ($baseAttributes as $attr) {
echo "Attribute " . $attr->name . " : " . $attr->text . "<br>";
}
}
}
}
