Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ZendFramework e Web Service

ZendFramework e Web Service

Introduzione a Zend Framework e componenti per scrivere, creare ed interagire con i web service.

Simone Carletti

May 23, 2008
Tweet

More Decks by Simone Carletti

Other Decks in Programming

Transcript

  1. Zend Framework ed i Web Service Introduzione a Zend Framework

    e componen4 per i web service Simone Carle; [email protected] www.simonecarle;.com phpDay 2008 Rimini, 23/24 Maggio 2008
  2. Due parole di presentazione •  Technical Manager in Altura Labs

    Srl (www.alturalabs.com) •  Zend Framework contributor (weppos) •  Membro dell’RSS Advisory Board (www.rssboard.org) •  Autore per HTML.it –  Edit –  PHP, Ruby, ASP, XML, WebMarke4ng, Database, Server –  ICTv.it •  Autore Zend Framework IT (www.zend‐framework.it) 23 Maggio 2008 phpDay 2008 - Simone Carletti 2
  3. Contenuti •  Introduzione ai framework •  Introduzione a Zend Framework

    e caraXeris4che •  Zend Framework ed i Web Service 1.  Client per web service 2.  Componen4 per sfruXare i web service 3.  Componen4 per sviluppare i web service 4.  Componen4 a supporto 23 Maggio 2008 phpDay 2008 - Simone Carletti 3
  4. Note per gli Esempi •  Per ques4oni di leggibilità, questa

    presentazione riporta solo frammenB degli script realizzaB come esempio •  Gli script sono disponibili in un paccheXo chiamato phpday2008.tgz, scaricabile dal mio sito o dal sito www.phpDay.it •  Leggere il file README contenuto all’ìnterno del paccheXo prima di procedere. Il significato di ogni script è riportato in breve in questa presentazione, alla voce Esempi: che segue un componente •  Non trovi il file phpday2008.tgz? Scrivimi a [email protected] ! 23 Maggio 2008 phpDay 2008 - Simone Carletti 4
  5. I framework •  Che cos’è un framework? –  Collezione di

    librerie –  Raccolta di strumen4 •  Perchè un framework? –  Aumento della produ;vità –  Soluzioni già pronte ai problemi comuni –  Manutenzione del socware –  Uniformità e standard –  Lo sviluppo è più divertente! 23 Maggio 2008 phpDay 2008 - Simone Carletti 5
  6. Chi non usa un framework si riconosce subito! 23 Maggio

    2008 phpDay 2008 - Simone Carletti 6
  7. Zend Framework •  Web Framework Open Source (Licenza New BSD)

    •  ScriXo in PHP 5 Object Oriented (PHP 5.1.4) •  Promosso da Zend Technologies •  Oltre 100 contributors a;vi •  hXp://framework.zend.com/ •  www.zend‐framework.it (non ufficiale) 23 Maggio 2008 phpDay 2008 - Simone Carletti 7
  8. Elementi Zend Framework •  Model‐View‐Controller (MVC) –  Zend_Controller, Zend_View, Zend_Layout,

    Zend_Form… •  Database –  Zend_Db, Zend_Db_Table •  Internazionalizzazione (i18n) e Localizzazione (l10n) –  Zend_Date, Zend_Locale, Zend_Measure, Zend_Translate •  Auten4cazione, Autorizzazione e Ges4one delle Sessioni –  Zend_Acl, Zend_Authen4ca4on, Zend_Session •  E‐mail, Forma4 e Ricerca –  Zend_Json, Zend_Pdf, Zend_Mail, Zend_Mime, Zend_Search_Lucene 23 Maggio 2008 phpDay 2008 - Simone Carletti 8
  9. Elementi Zend Framework •  InfrastruXura Core –  Zend_Cache, Zend_Config, Zend_Console_Getopt,

    Zend_Log, Zend_Memory –  Zend_Debug, Zend_Environment, Zend_Loader, Zend_Registry, Zend_Version –  Zend_Filter, Zend_Validate 23 Maggio 2008 phpDay 2008 - Simone Carletti 9 •  Web and Web Services –  Zend_Feed, Zend_Rest_Client, Zend_Service, Zend_XmlRpc_Client, Zend_Gdata, Zend_Http_Client, –  Zend_Uri
  10. Zend Framework e Web Service 1.  Client per web service

    –  Set di client pron4 all’uso per interagire con i principali web service come Yahoo, Amazon, Technora4, Gdata... 2.  Componen4 per sfruXare web service –  Librerie e strumen4 per interagire con dei web service esisten4 3.  Componen4 per sviluppare web service –  Librerie e strumen4 per sviluppare web service 4.  Componen4 aggiun4vi a supporto –  Librerie aggiun4ve u4lizzabili a supporto per lo scambio e la validazione dei da4, come URI e Date 23 Maggio 2008 phpDay 2008 - Simone Carletti 10
  11. 1. Client per web service •  Zend_Service_Akismet –  hXp://framework.zend.com/manual/en/zend.service.akismet.html – 

    Esempi: •  verifykey.php – verifica se l’API_KEY fornita è valida. •  isspam.php – legge il file isspam.yml e per ogni commento interroga Akismet per individuare se si traXa di Ham or SPAM. 23 Maggio 2008 phpDay 2008 - Simone Carletti 11
  12. 1. Client per web service <?php
 require_once dirname(__FILE__) . '/../helper.php';


    require_once 'Zend/Service/Akismet.php';
 $blog = 'http://www.simonecarletti.com/blog';
 $akismet = new Zend_Service_Akismet(AKISMET_API_KEY, );
 if ($akismet->verifyKey()) {
 echo "Key is valid.\n";
 } else {
 echo "Key is not valid\n";
 } 23 Maggio 2008 phpDay 2008 - Simone Carletti 12 verifykey.php
  13. 1. Client per web service … // see original file

    
 // load comment fixtures from yaml file
 $file = dirname(__FILE__) . '/isspam.yml';
 $comments = Spyc::YAMLLoad($file);
 // create a new Zend_Service_Akismet instance
 $akismet = new Zend_Service_Akismet(AKISMET_API_KEY, 'http:// www.simonecarletti.com/blog');
 // batch check comments
 echo "Starting batch: " . count($comments) . " comment(s) to check from $file";
 echo "\n";
 foreach ($comments as $comment) {
 echo "\nChecking comment from {$comment['comment_author']} …";
 $spam = $akismet->isSpam($comment);
 … // see original file 
 echo "\n Akismet: " . ($spam ? 'spam' : 'ham');
 echo "\n";
 }
 … // see original file 23 Maggio 2008 phpDay 2008 - Simone Carletti 13 isspam.php
  14. 1. Client per web service •  Zend_Service_Delicious –  hXp://framework.zend.com/manual/en/zend.service.delicious.html – 

    Esempi: •  recent.php – interroga del.icio.us e res4tuisce i 15 bookmark più recen4 salva4 dall’utente. 23 Maggio 2008 phpDay 2008 - Simone Carletti 14
  15. 1. Client per web service <?php
 require_once 'Zend/Service/Delicious.php';
 $delicious =

    new Zend_Service_Delicious(USERNAME, PASSWORD);
 $posts = $delicious->getRecentPosts();
 echo "Found " . count($posts) . " post(s)\n";
 echo "\n";
 foreach ($posts as $index => $post) {
 echo "$index.\n";
 echo " Title: {$post->getTitle()}\n";
 echo " Url: {$post->getUrl()}\n";
 echo " Desc: {$post->getNotes()}\n";
 } 23 Maggio 2008 phpDay 2008 - Simone Carletti 15 recent.php
  16. 1. Client per web service •  Zend_Service_Technora4 –  hXp://framework.zend.com/manual/en/zend.service.technora4.html – 

    Esempi: •  userinfo.php – recupera da Technora4 le informazioni rela4ve ad un dato username. •  userinfo.cli.php – versione modificata dell’esempio precedente, da avviare via command line. •  userinfo‐yml.cli.php – versione modificata dell’esempio precedente, stampa un output compa4bile con le specifiche YAML per dimostrare come è possibile interagire con altri linguaggi, ad esempio Ruby. 23 Maggio 2008 phpDay 2008 - Simone Carletti 16
  17. 1. Client per web service •  Zend_Service_Amazon •  Zend_Service_Audioscrobbler • 

    Zend_Service_Flickr •  Zend_Service_Nirvanix •  Zend_Service_Simpy •  Zend_Service_Slideshare •  Zend_Service_StrikeIron •  Zend_Service_Yahoo •  Zend_Gdata 23 Maggio 2008 phpDay 2008 - Simone Carletti 17
  18. 2. Componenti per sfruttare web service •  Zend_Feed –  hXp://framework.zend.com/manual/en/zend.feed.html

    –  Esempi: •  read.php – legge e stampa a video il contenuto di un determinato feed. 23 Maggio 2008 phpDay 2008 - Simone Carletti 18
  19. 2. Componenti per sfruttare web service <?php
 require_once 'Zend/Feed.php';
 //

    Fetch the latest posts
 try {
 $feed = Zend_Feed::import('http://www.zend-framework.it/feed');
 
 // loop all items
 foreach($feed as $index => $item) {
 echo "$index.\n";
 echo " Title: {$item->title()}\n";
 echo " Link: {$item->link()}\n";
 echo " Desc: {$item->description()}\n";
 echo "\n";
 }
 
 } catch (Zend_Feed_Exception $e) {
 echo "Aaaargh! The script crashed: " . $e->getMessage();
 } 23 Maggio 2008 phpDay 2008 - Simone Carletti 19 read.php
  20. 2. Componenti per sfruttare web service •  Zend_HXp_Client –  hXp://framework.zend.com/manual/en/zend.hXp.client.advanced.html

    –  Esempi: •  client.php – un semplice client HTTP per leggere il contenuto di un URL. •  sitestatus.cli.php – un semplicissimo script per verificare lo status di una lista di si4 web, salva4 in un file YAML. Res4tuisce un output compa4bile con YAML contenente le informazioni sullo status di ogni sito interrogato. 23 Maggio 2008 phpDay 2008 - Simone Carletti 20
  21. 2. Componenti per sfruttare web service •  Zend_Rest_Client –  hXp://framework.zend.com/manual/en/zend.rest.client.html

    •  Zend_XmlRpx_Client –  hXp://framework.zend.com/manual/en/zend.xmlrpc.client.html 23 Maggio 2008 phpDay 2008 - Simone Carletti 21
  22. 3. Componenti per sviluppare web service •  Zend_Rest_Server –  hXp://framework.zend.com/manual/en/zend.rest.server.html

    •  Zend_XmlRpc_Server –  hXp://framework.zend.com/manual/en/zend.xmlrpc.server.html •  Zend_HXp_Server •  Zend_Soap_Server 23 Maggio 2008 phpDay 2008 - Simone Carletti 22
  23. 4. Componenti a supporto •  Zend_Uri –  hXp://framework.zend.com/manual/en/zend.uri.html –  Esempi:

    •  validate.php – stampa a video il risultato della validazione di un URL •  parser.cli.php – esegue il parsing di un URL in input e stampa un output compa4bile con YAML contenente ogni frammento dell’URL, per dimostrare la possibilità di interazione tra PHP ed altri linguaggi. 23 Maggio 2008 phpDay 2008 - Simone Carletti 23
  24. 4. Componenti a supporto <?php
 require_once 'Zend/Uri.php';
 $url = 'http://www.simonecarletti.com/';


    echo "Validating `$url`: ";
 echo Zend_Uri::check($url) ? "valid" : "invalid";
 echo "\n"; 23 Maggio 2008 phpDay 2008 - Simone Carletti 24 validate.php
  25. 4. Componenti a supporto •  Zend_Date –  hXp://framework.zend.com/manual/en/zend.date.html •  Zend_Locale

    –  hXp://framework.zend.com/manual/en/zend.locale.html •  Zend_Currency –  hXp://framework.zend.com/manual/en/zend.currency.html •  Zend_Measure –  hXp://framework.zend.com/manual/en/zend.measure.html 23 Maggio 2008 phpDay 2008 - Simone Carletti 25