ZendFramework e Web Service

26
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

description

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

Transcript of ZendFramework e Web Service

Page 1: ZendFramework e Web Service

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 

Page 2: ZendFramework e Web Service

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

Page 3: ZendFramework e Web Service

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

Page 4: ZendFramework e Web Service

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

Page 5: ZendFramework e Web Service

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

Page 6: ZendFramework e Web Service

Chi non usa un framework si riconosce subito!

23 Maggio 2008 phpDay 2008 - Simone Carletti 6

Page 7: ZendFramework e Web Service

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

Page 8: ZendFramework e Web Service

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

Page 9: ZendFramework e Web Service

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 

Page 10: ZendFramework e Web Service

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

Page 11: ZendFramework e Web Service

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

Page 12: ZendFramework e Web Service

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

Page 13: ZendFramework e Web Service

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 commentsecho "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

Page 14: ZendFramework e Web Service

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

Page 15: ZendFramework e Web Service

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

Page 16: ZendFramework e Web Service

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

Page 17: ZendFramework e Web Service

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

Page 18: ZendFramework e Web Service

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

Page 19: ZendFramework e Web Service

2. Componenti per sfruttare web service

<?php

require_once 'Zend/Feed.php';

// Fetch the latest poststry {    $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

Page 20: ZendFramework e Web Service

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

Page 21: ZendFramework e Web Service

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

Page 22: ZendFramework e Web Service

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

Page 23: ZendFramework e Web Service

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

Page 24: ZendFramework e Web Service

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

Page 25: ZendFramework e Web Service

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

Page 26: ZendFramework e Web Service

The end!

Simone Carle; 

[email protected] www.simonecarle;.com