Simone Carletti: Zend Framework ed i Web Service

26
Zend Framework ed i Web Service Introduzione a Zend Framework ed I componenti per I web service Simone Carletti [email protected] phpDay 2008 Rimini, 23/24 Maggio 2008

description

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”.

Transcript of Simone Carletti: Zend Framework ed i Web Service

Page 1: Simone Carletti: Zend Framework ed i Web Service

Zend Framework ed i Web Service

Introduzione a Zend Framework ed I componenti per I web service

Simone [email protected]

phpDay 2008Rimini, 23/24 Maggio 2008

Page 2: Simone Carletti: Zend Framework ed i 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, WebMarketing, Database, Server– ICTv.it

• Autore Zend Framework IT (www.zend-framework.it)

23 Maggio 2008 2phpDay 2008 - Simone Carletti

Page 3: Simone Carletti: Zend Framework ed i Web Service

Contenuti

• Introduzione ai framework• Introduzione a Zend Framework e caratteristiche• Zend Framework ed i Web Service

1. Client per web service2. Componenti per sfruttare i web service3. Componenti per sviluppare i web service4. Componenti a supporto

23 Maggio 2008 3phpDay 2008 - Simone Carletti

Page 4: Simone Carletti: Zend Framework ed i Web Service

Note per gli Esempi

• Per questioni di leggibilità, questa presentazione riporta solo frammenti degli script realizzati come esempio

• Gli script sono disponibili in un pacchetto chiamato phpday2008.tgz, scaricabile dal mio sito o dal sito www.phpDay.it

• 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

• Non trovi il file phpday2008.tgz? Scrivimi a [email protected] !

23 Maggio 2008 4phpDay 2008 - Simone Carletti

Page 5: Simone Carletti: Zend Framework ed i Web Service

I framework

• Che cos’è un framework?– Collezione di librerie– Raccolta di strumenti

• Perchè un framework?– Aumento della produttività– Soluzioni già pronte ai problemi comuni– Manutenzione del software– Uniformità e standard– Lo sviluppo è più divertente!

23 Maggio 2008 5phpDay 2008 - Simone Carletti

Page 6: Simone Carletti: Zend Framework ed i Web Service

Chi non usa un framework si riconosce subito!

23 Maggio 2008 6phpDay 2008 - Simone Carletti

Page 7: Simone Carletti: Zend Framework ed i Web Service

Zend Framework

• Web Framework Open Source (Licenza New BSD)• Scritto in PHP 5 Object Oriented (PHP 5.1.4)• Promosso da Zend Technologies• Oltre 100 contributors attivi

• http://framework.zend.com/• www.zend-framework.it (non ufficiale)

23 Maggio 2008 7phpDay 2008 - Simone Carletti

Page 8: Simone Carletti: Zend Framework ed i 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

• Autenticazione, Autorizzazione e Gestione delle Sessioni – Zend_Acl, Zend_Authentication, Zend_Session

• E-mail, Formati e Ricerca– Zend_Json, Zend_Pdf, Zend_Mail, Zend_Mime, Zend_Search_Lucene

23 Maggio 2008 8phpDay 2008 - Simone Carletti

Page 9: Simone Carletti: Zend Framework ed i Web Service

Elementi Zend Framework

• Infrastruttura 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

• Web and Web Services– Zend_Feed, Zend_Rest_Client, Zend_Service,

Zend_XmlRpc_Client, Zend_Gdata, Zend_Http_Client,– Zend_Uri

23 Maggio 2008 9phpDay 2008 - Simone Carletti

Page 10: Simone Carletti: Zend Framework ed i Web Service

Zend Framework e Web Service

1. Client per web service– Set di client pronti all’uso per interagire con i principali web service

come Yahoo, Amazon, Technorati, Gdata...

2. Componenti per sfruttare web service– Librerie e strumenti per interagire con dei web service esistenti

3. Componenti per sviluppare web service– Librerie e strumenti per sviluppare web service

4. Componenti aggiuntivi a supporto– Librerie aggiuntive utilizzabili a supporto per lo scambio e la

validazione dei dati, come URI e Date

23 Maggio 2008 10phpDay 2008 - Simone Carletti

Page 11: Simone Carletti: Zend Framework ed i Web Service

1. Client per web service

• Zend_Service_Akismet– http://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 tratta di Ham or SPAM.

23 Maggio 2008 11phpDay 2008 - Simone Carletti

Page 12: Simone Carletti: Zend Framework ed i 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";}

verifykey.php

23 Maggio 2008 12phpDay 2008 - Simone Carletti

Page 13: Simone Carletti: Zend Framework ed i 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 isspam.php

23 Maggio 2008 13phpDay 2008 - Simone Carletti

Page 14: Simone Carletti: Zend Framework ed i Web Service

1. Client per web service

• Zend_Service_Delicious– http://framework.zend.com/manual/en/zend.service.delicious.html

– Esempi:• recent.php – interroga del.icio.us e restituisce i 15 bookmark più recenti

salvati dall’utente.

23 Maggio 2008 14phpDay 2008 - Simone Carletti

Page 15: Simone Carletti: Zend Framework ed i 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";} recent.php

23 Maggio 2008 15phpDay 2008 - Simone Carletti

Page 16: Simone Carletti: Zend Framework ed i Web Service

1. Client per web service

• Zend_Service_Technorati– http://framework.zend.com/manual/en/zend.service.technorati.html

– Esempi:• userinfo.php – recupera da Technorati le informazioni relative 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 compatibile con le specifiche YAML per dimostrare come è possibile interagire con altri linguaggi, ad esempio Ruby.

23 Maggio 2008 16phpDay 2008 - Simone Carletti

Page 17: Simone Carletti: Zend Framework ed i 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 17phpDay 2008 - Simone Carletti

Page 18: Simone Carletti: Zend Framework ed i Web Service

2. Componenti per sfruttare web service

• Zend_Feed– http://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 18phpDay 2008 - Simone Carletti

Page 19: Simone Carletti: Zend Framework ed i 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();}

read.php

23 Maggio 2008 19phpDay 2008 - Simone Carletti

Page 20: Simone Carletti: Zend Framework ed i Web Service

2. Componenti per sfruttare web service

• Zend_Http_Client– http://framework.zend.com/manual/en/zend.http.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 siti web, salvati in un file YAML. Restituisce un output compatibile con YAML contenente le informazioni sullo status di ogni sito interrogato.

23 Maggio 2008 20phpDay 2008 - Simone Carletti

Page 21: Simone Carletti: Zend Framework ed i Web Service

2. Componenti per sfruttare web service

• Zend_Rest_Client– http://framework.zend.com/manual/en/zend.rest.client.html

• Zend_XmlRpx_Client– http://framework.zend.com/manual/en/zend.xmlrpc.client.html

23 Maggio 2008 21phpDay 2008 - Simone Carletti

Page 22: Simone Carletti: Zend Framework ed i Web Service

3. Componenti per sviluppare web service

• Zend_Rest_Server– http://framework.zend.com/manual/en/zend.rest.server.html

• Zend_XmlRpc_Server– http://framework.zend.com/manual/en/zend.xmlrpc.server.html

• Zend_Http_Server• Zend_Soap_Server

23 Maggio 2008 22phpDay 2008 - Simone Carletti

Page 23: Simone Carletti: Zend Framework ed i Web Service

4. Componenti a supporto

• Zend_Uri– http://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

compatibile con YAML contenente ogni frammento dell’URL, per dimostrare la possibilità di interazione tra PHP ed altri linguaggi.

23 Maggio 2008 23phpDay 2008 - Simone Carletti

Page 24: Simone Carletti: Zend Framework ed i 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";

validate.php

23 Maggio 2008 24phpDay 2008 - Simone Carletti

Page 25: Simone Carletti: Zend Framework ed i Web Service

4. Componenti a supporto

• Zend_Date– http://framework.zend.com/manual/en/zend.date.html

• Zend_Locale– http://framework.zend.com/manual/en/zend.locale.html

• Zend_Currency– http://framework.zend.com/manual/en/zend.currency.html

• Zend_Measure– http://framework.zend.com/manual/en/zend.measure.html

23 Maggio 2008 25phpDay 2008 - Simone Carletti

Page 26: Simone Carletti: Zend Framework ed i Web Service

The end!

Simone [email protected]

www.simonecarletti.com