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>"; } } } }