Simone Carletti: Zend Framework ed i Web Service

4,081 views

Published on

Perché i web service?

In una fase dove il web punta ad architetture evolute, pattern MVC ed interazioni tra piattaforme differenti, non è da sottovalutare l’aspetto delle API e l’importanza dei web service nel creare un’applicazione “ricca”.

Published in: Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,081
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
38
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Simone Carletti: Zend Framework ed i Web Service

  1. 1. Zend Framework ed i Web Service Introduzione a Zend Framework ed I componenti per I web service Simone Carletti [email_address] phpDay 2008 Rimini, 23/24 Maggio 2008
  2. 2. Due parole di presentazione <ul><li>Technical Manager in Altura Labs Srl ( www.alturalabs.com ) </li></ul><ul><li>Zend Framework contributor (weppos) </li></ul><ul><li>Membro dell’ RSS Advisory Board ( www.rssboard.org ) </li></ul><ul><li>Autore per HTML.it </li></ul><ul><ul><li>Edit </li></ul></ul><ul><ul><li>PHP, Ruby, ASP, XML, WebMarketing, Database, Server </li></ul></ul><ul><ul><li>ICTv.it </li></ul></ul><ul><li>Autore Zend Framework IT ( www.zend-framework.it ) </li></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  3. 3. Contenuti <ul><li>Introduzione ai framework </li></ul><ul><li>Introduzione a Zend Framework e caratteristiche </li></ul><ul><li>Zend Framework ed i Web Service </li></ul><ul><ul><li>Client per web service </li></ul></ul><ul><ul><li>Componenti per sfruttare i web service </li></ul></ul><ul><ul><li>Componenti per sviluppare i web service </li></ul></ul><ul><ul><li>Componenti a supporto </li></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  4. 4. Note per gli Esempi <ul><li>Per questioni di leggibilità, questa presentazione riporta solo frammenti degli script realizzati come esempio </li></ul><ul><li>Gli script sono disponibili in un pacchetto chiamato phpday2008.tgz , scaricabile dal mio sito o dal sito www.phpDay.it </li></ul><ul><li>Leggere il file README contenuto all’ìnterno del pacchetto prima di procedere. Il significato di ogni script è riportato in breve in questa presentazione, alla voce Esempi: che segue un componente </li></ul><ul><li>Non trovi il file phpday2008.tgz? Scrivimi a [email_address] ! </li></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  5. 5. I framework <ul><li>Che cos’è un framework? </li></ul><ul><ul><li>Collezione di librerie </li></ul></ul><ul><ul><li>Raccolta di strumenti </li></ul></ul><ul><li>Perchè un framework? </li></ul><ul><ul><li>Aumento della produttività </li></ul></ul><ul><ul><li>Soluzioni già pronte ai problemi comuni </li></ul></ul><ul><ul><li>Manutenzione del software </li></ul></ul><ul><ul><li>Uniformità e standard </li></ul></ul><ul><ul><li>Lo sviluppo è più divertente! </li></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  6. 6. Chi non usa un framework si riconosce subito! 23 Maggio 2008 phpDay 2008 - Simone Carletti
  7. 7. Zend Framework <ul><li>Web Framework Open Source (Licenza New BSD) </li></ul><ul><li>Scritto in PHP 5 Object Oriented (PHP 5.1.4) </li></ul><ul><li>Promosso da Zend Technologies </li></ul><ul><li>Oltre 100 contributors attivi </li></ul><ul><li>http://framework.zend.com/ </li></ul><ul><li>www.zend-framework.it (non ufficiale) </li></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  8. 8. Elementi Zend Framework <ul><li>Model-View-Controller (MVC) </li></ul><ul><ul><li>Zend_Controller, Zend_View, Zend_Layout, Zend_Form… </li></ul></ul><ul><li>Database </li></ul><ul><ul><li>Zend_Db, Zend_Db_Table </li></ul></ul><ul><li>Internazionalizzazione (i18n) e Localizzazione (l10n) </li></ul><ul><ul><li>Zend_Date, Zend_Locale, Zend_Measure, Zend_Translate </li></ul></ul><ul><li>Autenticazione, Autorizzazione e Gestione delle Sessioni </li></ul><ul><ul><li>Zend_Acl, Zend_Authentication, Zend_Session </li></ul></ul><ul><li>E-mail, Formati e Ricerca </li></ul><ul><ul><li>Zend_Json, Zend_Pdf, Zend_Mail, Zend_Mime, Zend_Search_Lucene </li></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  9. 9. Elementi Zend Framework <ul><li>Infrastruttura Core </li></ul><ul><ul><li>Zend_Cache, Zend_Config, Zend_Console_Getopt, Zend_Log, Zend_Memory </li></ul></ul><ul><ul><li>Zend_Debug, Zend_Environment, Zend_Loader, Zend_Registry, Zend_Version </li></ul></ul><ul><ul><li>Zend_Filter, Zend_Validate </li></ul></ul><ul><li>Web and Web Services </li></ul><ul><ul><li>Zend_Feed, Zend_Rest_Client, Zend_Service, Zend_XmlRpc_Client, Zend_Gdata, Zend_Http_Client, </li></ul></ul><ul><ul><li>Zend_Uri </li></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  10. 10. Zend Framework e Web Service <ul><li>Client per web service </li></ul><ul><ul><li>Set di client pronti all’uso per interagire con i principali web service come Yahoo, Amazon, Technorati, Gdata... </li></ul></ul><ul><li>Componenti per sfruttare web service </li></ul><ul><ul><li>Librerie e strumenti per interagire con dei web service esistenti </li></ul></ul><ul><li>Componenti per sviluppare web service </li></ul><ul><ul><li>Librerie e strumenti per sviluppare web service </li></ul></ul><ul><li>Componenti aggiuntivi a supporto </li></ul><ul><ul><li>Librerie aggiuntive utilizzabili a supporto per lo scambio e la validazione dei dati, come URI e Date </li></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  11. 11. 1. Client per web service <ul><li>Zend_Service_Akismet </li></ul><ul><ul><li>http://framework.zend.com/manual/en/zend.service.akismet.html </li></ul></ul><ul><ul><li>Esempi: </li></ul></ul><ul><ul><ul><li>verifykey.php – verifica se l’API_KEY fornita è valida. </li></ul></ul></ul><ul><ul><ul><li>isspam.php – legge il file isspam.yml e per ogni commento interroga Akismet per individuare se si tratta di Ham or SPAM. </li></ul></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  12. 12. 1. Client per web service <ul><li><?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  &quot;Key is valid. &quot; ; } else {     echo  &quot;Key is not valid &quot; ; } </li></ul>verifykey.php 23 Maggio 2008 phpDay 2008 - Simone Carletti
  13. 13. 1. Client per web service <ul><li>… // 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  &quot;Starting batch: &quot;  .  count ( $comments ) .  &quot; comment(s) to check from $file&quot; ; echo  &quot; &quot; ; foreach ( $comments  as  $comment ) {     echo  &quot; Checking comment from {$comment['comment_author']} …&quot; ;      $spam  =  $akismet -> isSpam ( $comment );     … // see original file      echo  &quot;   Akismet:   &quot;  . ( $spam  ?  'spam'  :  'ham' );     echo  &quot; &quot; ; } … // see original file  </li></ul>isspam.php 23 Maggio 2008 phpDay 2008 - Simone Carletti
  14. 14. 1. Client per web service <ul><li>Zend_Service_Delicious </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.service.delicious.html </li></ul></ul><ul><ul><li>Esempi: </li></ul></ul><ul><ul><ul><li>recent.php – interroga del.icio.us e restituisce i 15 bookmark più recenti salvati dall’utente. </li></ul></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  15. 15. 1. Client per web service <ul><li><?php require_once  'Zend/Service/Delicious.php' ; $delicious   = new  Zend_Service_Delicious ( USERNAME ,  PASSWORD ); $posts       =  $delicious -> getRecentPosts (); echo  &quot;Found &quot;  .  count ( $posts ) .  &quot; post(s) &quot; ; echo  &quot; &quot; ; foreach ( $posts  as  $index  =>  $post ) {     echo  &quot;$index. &quot; ;     echo  &quot;  Title: {$post->getTitle()} &quot; ;     echo  &quot;  Url:   {$post->getUrl()} &quot; ;     echo  &quot;  Desc:  {$post->getNotes()} &quot; ; } </li></ul>recent.php 23 Maggio 2008 phpDay 2008 - Simone Carletti
  16. 16. 1. Client per web service <ul><li>Zend_Service_Technorati </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.service.technorati.html </li></ul></ul><ul><ul><li>Esempi: </li></ul></ul><ul><ul><ul><li>userinfo.php – recupera da Technorati le informazioni relative ad un dato username. </li></ul></ul></ul><ul><ul><ul><li>userinfo.cli.php – versione modificata dell’esempio precedente, da avviare via command line. </li></ul></ul></ul><ul><ul><ul><li>userinfo-yml.cli.php – versione modificata dell’esempio precedente, stampa un output compatibile con le specifiche YAML per dimostrare come è possibile interagire con altri linguaggi, ad esempio Ruby. </li></ul></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  17. 17. 1. Client per web service <ul><li>Zend_Service_Amazon </li></ul><ul><li>Zend_Service_Audioscrobbler </li></ul><ul><li>Zend_Service_Flickr </li></ul><ul><li>Zend_Service_Nirvanix </li></ul><ul><li>Zend_Service_Simpy </li></ul><ul><li>Zend_Service_Slideshare </li></ul><ul><li>Zend_Service_StrikeIron </li></ul><ul><li>Zend_Service_Yahoo </li></ul><ul><li>Zend_Gdata </li></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  18. 18. 2. Componenti per sfruttare web service <ul><li>Zend_Feed </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.feed.html </li></ul></ul><ul><ul><li>Esempi: </li></ul></ul><ul><ul><ul><li>read.php – legge e stampa a video il contenuto di un determinato feed. </li></ul></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  19. 19. 2. Componenti per sfruttare web service <ul><li><?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  &quot;$index. &quot; ;         echo  &quot;  Title: {$item->title()} &quot; ;         echo  &quot;  Link:  {$item->link()} &quot; ;         echo  &quot;  Desc:  {$item->description()} &quot; ;         echo  &quot; &quot; ;     }      } catch ( Zend_Feed_Exception $e ) {     echo  &quot;Aaaargh! The script crashed: &quot;  .  $e -> getMessage (); } </li></ul>read.php 23 Maggio 2008 phpDay 2008 - Simone Carletti
  20. 20. 2. Componenti per sfruttare web service <ul><li>Zend_Http_Client </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.http.client.advanced.html </li></ul></ul><ul><ul><li>Esempi: </li></ul></ul><ul><ul><ul><li>client.php – un semplice client HTTP per leggere il contenuto di un URL. </li></ul></ul></ul><ul><ul><ul><li>sitestatus.cli.php – un semplicissimo script per verificare lo status di una lista di siti web, salvati in un file YAML. Restituisce un output compatibile con YAML contenente le informazioni sullo status di ogni sito interrogato. </li></ul></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  21. 21. 2. Componenti per sfruttare web service <ul><li>Zend_Rest_Client </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.rest.client.html </li></ul></ul><ul><li>Zend_XmlRpx_Client </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.xmlrpc.client.html </li></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  22. 22. 3. Componenti per sviluppare web service <ul><li>Zend_Rest_Server </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.rest.server.html </li></ul></ul><ul><li>Zend_XmlRpc_Server </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.xmlrpc.server.html </li></ul></ul><ul><li>Zend_Http_Server </li></ul><ul><li>Zend_Soap_Server </li></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  23. 23. 4. Componenti a supporto <ul><li>Zend_Uri </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.uri.html </li></ul></ul><ul><ul><li>Esempi: </li></ul></ul><ul><ul><ul><li>validate.php – stampa a video il risultato della validazione di un URL </li></ul></ul></ul><ul><ul><ul><li>parser.cli.php – esegue il parsing di un URL in input e stampa un output compatibile con YAML contenente ogni frammento dell’URL, per dimostrare la possibilità di interazione tra PHP ed altri linguaggi. </li></ul></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  24. 24. 4. Componenti a supporto <ul><li><?php require_once  'Zend/Uri.php' ; $url  =  'http://www.simonecarletti.com/' ; echo  &quot;Validating `$url`: &quot; ; echo  Zend_Uri :: check ( $url ) ?  &quot;valid&quot;  :  &quot;invalid&quot; ; echo  &quot; &quot; ; </li></ul>validate.php 23 Maggio 2008 phpDay 2008 - Simone Carletti
  25. 25. 4. Componenti a supporto <ul><li>Zend_Date </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.date.html </li></ul></ul><ul><li>Zend_Locale </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.locale.html </li></ul></ul><ul><li>Zend_Currency </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.currency.html </li></ul></ul><ul><li>Zend_Measure </li></ul><ul><ul><li>http:// framework.zend.com/manual/en/zend.measure.html </li></ul></ul>23 Maggio 2008 phpDay 2008 - Simone Carletti
  26. 26. The end! Simone Carletti [email_address] www.simonecarletti.com

×