Quoi de neuf dans Zend Framework 1.10 ?

Preview:

DESCRIPTION

Revue des nouveautés de Zend Framework 1.10

Citation preview

© All rights reserved. Zend Technologies, Inc.

Quoi de neuf dans ZF 1.10 ?Mickaël PerraudContributeur Zend FrameworkResponsable documentation française

© All rights reserved. Zend Technologies, Inc.

En bref Nombreuses améliorations Nouveaux composants Nouveaux services Mise à jour de la documentation

© All rights reserved. Zend Technologies, Inc.

En bref Nombreuses améliorations Nouveaux composants Nouveaux services Mise à jour de la documentation

© All rights reserved. Zend Technologies, Inc.4

Améliorations

Building incrementally

© All rights reserved. Zend Technologies, Inc.

Améliorations

•Zend_Filter_Boolean

5 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Améliorations

•Zend_Filter_Null

6 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Améliorations

•Zend_Filter_Compress / Decompress

7 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Améliorations

•Zend_Validate_Callback

8 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Améliorations

•Zend_Validate_CreditCardInstituts de cartes de crédit supportés :

• American Express, China UnionPay

• Diners Club Card Blanche, Diners Club International, Diners Club US & Canada

• Discover Card, JCB, Laser, Maestro

• MasterCard, Solo

• Visa, Visa Electron

9 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Améliorations

•Zend_Validate_PostCodeVous permet de déterminer si une valeur

donnée est un code postal valide

Tient compte de la régionalisation

10 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Améliorations

•Zend_Log::factory() & Zend Monitor Writer Adapter

11 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Améliorations

•Zend_Log::factory() & Zend Monitor Writer Adapter

12 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Améliorations

•Améliorations de la performance de Zend_Pdf

•Support de l’exception précédente avec Zend_Exception

•Adaptation de Zend_Loader::loadClass() afin de respecter les recommendations de la PSR-0 (http://groups.google.com/group/php-standards/web/psr-0-final-proposal)

•Mise à jour vers Dojo 1.413 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Améliorations

•Nouvelles ressources pour Zend_ApplicationCachemanager

Dojo

Jquery

Layout

Log

Mail

Multidb

14 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Améliorations

•Fournisseurs Zend_ToolPlus de scanner d’IncludePath– le chargement est

explicite

Dossier Home & Configuration

Fournisseur DbAdapter

Fournisseur Layout

Echaffaudage basique (scaffolding)• Fournisseur de Model

• Fournisseur de Form

Les projets à partir de la 1.10+ sont générés avec le préfixe Application_ dans le code et le bootstrap

15 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Améliorations

© All rights reserved. Zend Technologies, Inc.

Améliorations

© All rights reserved. Zend Technologies, Inc.

Améliorations

© All rights reserved. Zend Technologies, Inc.19

Nouveaux composants

Extending an already extensible and extensive framework

© All rights reserved. Zend Technologies, Inc.

Zend_Barcode Créer des code-barres et les rendre en

PDF ou en images Valider des valeurs de code-barres

© All rights reserved. Zend Technologies, Inc.21

$renderer = Zend_Barcode::factory( 'code39', // type de code-barres 'image', // image ou PDF array( // options du code-barres 'text' => 'ZENDFRAMEWORK', ), array( // options du rendu 'imageType' => 'png', ));$image = $renderer->draw();imagepng($image, __DIR__ . '/barcode.png');

$renderer = Zend_Barcode::factory( 'code39', // type de code-barres 'image', // image ou PDF array( // options du code-barres 'text' => 'ZENDFRAMEWORK', ), array( // options du rendu 'imageType' => 'png', ));$image = $renderer->draw();imagepng($image, __DIR__ . '/barcode.png');

© All rights reserved. Zend Technologies, Inc.22

$validator = new Zend_Validate_Barcode('CODE39');if ($validator->isValid($input)) { // Texte de code-barres valide} else { // Texte de code-barres invalide}

$validator = new Zend_Validate_Barcode('CODE39');if ($validator->isValid($input)) { // Texte de code-barres valide} else { // Texte de code-barres invalide}

© All rights reserved. Zend Technologies, Inc.

Zend_Cache Nouveau backend :

Zend_Cache_Backend_Static Mettre en cache dans des fichiers nommés

dans votre document root Eliminez toute trace de PHP du contenu caché !

Nouveau gestionnaire : Zend_Cache_Manager Utilisez la configuration pour créer des objets

de cache Joue le rôle de fabrique et de stockage pour de

multiples objets de cache Facilite l’utilisation de stratégies de cache à

niveaux multiples dans vos applications ZF

© All rights reserved. Zend Technologies, Inc.24

RewriteCond %{DOCUMENT_ROOT}/cached/% {REQUEST_URI}.html -fRewriteRule .* cached/%{REQUEST_URI}.%1 [L]

RewriteCond %{DOCUMENT_ROOT}/cached/% {REQUEST_URI}.html -fRewriteRule .* cached/%{REQUEST_URI}.%1 [L]

© All rights reserved. Zend Technologies, Inc.25

$options = array( 'public_dir' => APPLICATION_PATH . '/../public/cache',);// Où $manager est une instance de Zend_Cache_Manager$manager->setTemplateOptions('page', $options);$cache = $manager->getCache('page');

// Dans une action de contrôleur :public function preDispatch(){ $this->_helper->cache( // mettre en cache ces actions : array('foo', 'bar', 'baz'), // utilise cette balise : array($this->_request->getControllerName()), // avec cette extension : 'html' );}

$options = array( 'public_dir' => APPLICATION_PATH . '/../public/cache',);// Où $manager est une instance de Zend_Cache_Manager$manager->setTemplateOptions('page', $options);$cache = $manager->getCache('page');

// Dans une action de contrôleur :public function preDispatch(){ $this->_helper->cache( // mettre en cache ces actions : array('foo', 'bar', 'baz'), // utilise cette balise : array($this->_request->getControllerName()), // avec cette extension : 'html' );}

© All rights reserved. Zend Technologies, Inc.26

$manager = new Zend_Cache_Manager;$dbCache = array( 'frontend' => array( 'name' => 'Core', 'options' => array( 'lifetime' => 3600, 'automatic_serialization' => true, ) ), 'backend' => array( 'name' => 'Core', 'options' => array( 'cache_dir' => APPLICATION_PATH . '/../data/cache/db', ), ),);$manager->setCacheTemplate('db', $dbCache);$cache = $manager->getCache('db');

$manager = new Zend_Cache_Manager;$dbCache = array( 'frontend' => array( 'name' => 'Core', 'options' => array( 'lifetime' => 3600, 'automatic_serialization' => true, ) ), 'backend' => array( 'name' => 'Core', 'options' => array( 'cache_dir' => APPLICATION_PATH . '/../data/cache/db', ), ),);$manager->setCacheTemplate('db', $dbCache);$cache = $manager->getCache('db');

© All rights reserved. Zend Technologies, Inc.

Zend_Feed_Writer Complément de Zend_Feed_Reader,

introduit dans ZF 1.9.0 Fournit tout le nécessaire à la génération

d’un grand nombre de flux, incluant ces extensions

RSS RSS2 Atom DublinCore etc.

© All rights reserved. Zend Technologies, Inc.28

$feed = new Zend_Feed_Writer_Feed;$feed->setTitle('ZF Webinars') ->setLink( 'http://framework.zend.com/webinars/atom', 'atom') ->addAuthor(array( 'name' => 'ZF DevTeam', 'email' => 'fw-general@lists.zend.com', 'uri' => 'http://framework.zend.com/', )) ->setDateModified(strtotime( '2010-03-17 12:00:00'));

$feed = new Zend_Feed_Writer_Feed;$feed->setTitle('ZF Webinars') ->setLink( 'http://framework.zend.com/webinars/atom', 'atom') ->addAuthor(array( 'name' => 'ZF DevTeam', 'email' => 'fw-general@lists.zend.com', 'uri' => 'http://framework.zend.com/', )) ->setDateModified(strtotime( '2010-03-17 12:00:00'));

© All rights reserved. Zend Technologies, Inc.29

$entry = $feed->createEntry();$entry->setLink( 'http://framework.zend.com/webinars/2010-03-17') ->addAuthor(array( 'name' => 'Ralph Schindler', 'email' => 'ralph.schindler@zend.com', 'uri' => 'http://framework.zend.com/', )) ->setDateModified(strtotime( '2010-03-17 12:00:00')) ->setDateCreated(strtotime( '2010-03-15 08:39:00'));

$output = $feed->export('atom');

$entry = $feed->createEntry();$entry->setLink( 'http://framework.zend.com/webinars/2010-03-17') ->addAuthor(array( 'name' => 'Ralph Schindler', 'email' => 'ralph.schindler@zend.com', 'uri' => 'http://framework.zend.com/', )) ->setDateModified(strtotime( '2010-03-17 12:00:00')) ->setDateCreated(strtotime( '2010-03-15 08:39:00'));

$output = $feed->export('atom');

© All rights reserved. Zend Technologies, Inc.

Zend_Feed_Pubsubhubbub Agit soit comme un souscripteur PuSH ou

un publicateur La fonctionnalité de souscription permet

de spécifier un URL de callback pour les gros PuSH

Utilise un stockage en base de données par défaut pour stocker les nouvelles qui ont déjà été reçu

La fonctionnalité de publication vous permet d’informer un hub qu’un nouveau contenu est disponible

© All rights reserved. Zend Technologies, Inc.31

$publisher = new Zend_Feed_Pubsubhubbub_Publisher;$publisher->addHubUrls(array( 'http://pubsubhubbub.appspot.com/', 'http://wordpress.org/extend/plugins/pushpress/', )) ->addUpdatedTopicUrls(array( 'http://framework.zend.com/webinars/atom', ));// Notifier$publisher->notifyAll();

$publisher = new Zend_Feed_Pubsubhubbub_Publisher;$publisher->addHubUrls(array( 'http://pubsubhubbub.appspot.com/', 'http://wordpress.org/extend/plugins/pushpress/', )) ->addUpdatedTopicUrls(array( 'http://framework.zend.com/webinars/atom', ));// Notifier$publisher->notifyAll();

© All rights reserved. Zend Technologies, Inc.32

$storage = new Zend_Feed_Pubsubhubbub_Model_Subscription;

$subscriber = new Zend_Feed_Pubsubhubbub_Subscriber;$subscriber->setStorage($storage) ->addHubUrl( 'http://pubsubhubbub.appspot.com/') ->setTopicUrl( 'http://framework.zend.com/webinars/atom') ->setCallbackUrl( 'http://www.mydomain.com/hubbub/callback') ->subscribeAll();

$storage = new Zend_Feed_Pubsubhubbub_Model_Subscription;

$subscriber = new Zend_Feed_Pubsubhubbub_Subscriber;$subscriber->setStorage($storage) ->addHubUrl( 'http://pubsubhubbub.appspot.com/') ->setTopicUrl( 'http://framework.zend.com/webinars/atom') ->setCallbackUrl( 'http://www.mydomain.com/hubbub/callback') ->subscribeAll();

© All rights reserved. Zend Technologies, Inc.33

$callback = new Zend_Feed_Pubsubhubbub_Subscriber_Callback;$callback->setStorage($storage);$callback->handle();$callback->sendResponse();

if ($callback->hasFeedUpdate()) { $feedString = $callback->getFedUpdate(); // démarrage du processus !}

$callback = new Zend_Feed_Pubsubhubbub_Subscriber_Callback;$callback->setStorage($storage);$callback->handle();$callback->sendResponse();

if ($callback->hasFeedUpdate()) { $feedString = $callback->getFedUpdate(); // démarrage du processus !}

© All rights reserved. Zend Technologies, Inc.

Zend_Markup Fonctionnalités d’analyse et de gestion du

rendu Supporte :

BBCode Textile

$bbcode = Zend_Markup::factory('Bbcode');echo $bbcode->render($someBbCodeMarkup);

$textile = Zend_Markup::factory('Textile');echo $textile->render($someTextileMarkup);

$bbcode = Zend_Markup::factory('Bbcode');echo $bbcode->render($someBbCodeMarkup);

$textile = Zend_Markup::factory('Textile');echo $textile->render($someTextileMarkup);

© All rights reserved. Zend Technologies, Inc.

Zend_Oauth Agit comme un consommateur Oauth

© All rights reserved. Zend Technologies, Inc.36

$config = array( 'callbackUrl' => 'http://example.com/callback', 'siteUrl' => 'http://twitter.com/oauth', 'consumerKey' => 'gg3DsFTW9OU9eWPnbuPzQ', 'consumerSecret' => 'tFB0fyWLSMf74lkEu9FTyoHXcazOWpbrAjTCCK48A');$consumer = new Zend_Oauth_Consumer($config);

// Récupération du jeton de la requête :$token = $consumer->getRequestToken();

// Se souvenir du jeton :$session = new Zend_Session_Namespace('oauth');$session->token = serialize($token);

// Rediriger vers le fournisseur Oauth :$consumer->redirect();

$config = array( 'callbackUrl' => 'http://example.com/callback', 'siteUrl' => 'http://twitter.com/oauth', 'consumerKey' => 'gg3DsFTW9OU9eWPnbuPzQ', 'consumerSecret' => 'tFB0fyWLSMf74lkEu9FTyoHXcazOWpbrAjTCCK48A');$consumer = new Zend_Oauth_Consumer($config);

// Récupération du jeton de la requête :$token = $consumer->getRequestToken();

// Se souvenir du jeton :$session = new Zend_Session_Namespace('oauth');$session->token = serialize($token);

// Rediriger vers le fournisseur Oauth :$consumer->redirect();

© All rights reserved. Zend Technologies, Inc.37

// A l’intérieur d’une action de contrôleur en// considérant le consommateur et la session// paramètrée comme ci-dessus$request = $this->getRequest();if (!$request->isGet() || !isset($session->token)) { // Gestion des erreurs !}$token = $consumer->getAccessToken( $request->getQuery(), unserialize($session->token));// Utilisation du jeton !$client = $token->getHttpClient();// ...

// A l’intérieur d’une action de contrôleur en// considérant le consommateur et la session// paramètrée comme ci-dessus$request = $this->getRequest();if (!$request->isGet() || !isset($session->token)) { // Gestion des erreurs !}$token = $consumer->getAccessToken( $request->getQuery(), unserialize($session->token));// Utilisation du jeton !$client = $token->getHttpClient();// ...

© All rights reserved. Zend Technologies, Inc.

Zend_Serializer Sérialise du PHP dans différents formats

et reconvertit aussi vers du PHP Les formats supportés incluent :

Igbinary WDDX JSON Active Message Format (AMF) 0 and 3 Python Pickle Code PHP ou de la sérialisation

© All rights reserved. Zend Technologies, Inc.39

$serializer = Zend_Serializer::factory('Json');

$serialized = $serializer->serialize($data);$unserialized = $serializer->unserialize($serialized);

$serializer = Zend_Serializer::factory('Json');

$serialized = $serializer->serialize($data);$unserialized = $serializer->unserialize($serialized);

© All rights reserved. Zend Technologies, Inc.40

Nouveaux services

Extending your reach into the cloud

© All rights reserved. Zend Technologies, Inc.

New Service - LiveDocx

•http://www.livedocx.com/

•Mieux décrit par une image :

41 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Nouveau service - LiveDocx

42 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Nouveau service - LiveDocx

43 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Nouveau service - LiveDocx

•Autres fonctionnalités de l’API :Modèles distants ou locaux

Possibilité de récupérer des informations à partir des modèles

Formats des modèles en entrée :• Docx, Doc, RTF, TXD

Formats des modèles en sortie :• Docx, Doc, Html, RTF, PDF, TXD, TXT

Formats des images en sortie :• BMP, PNG, GIF, TIFF, WMF, JPG

44 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Nouveau service - DeveloperGarden

•Developer Garden est le nom de la communauté des développeurs de la Deutsche Telekom’s.

•Fonctionnalités de l’API :BaseUserService

• Classe pour gérer l’API sur les détails des comptes utilisateurs et les quotas.

IPLocation• Localise l’IP fournie et retourne des coordonnées géographiques.

Fonctionne seulement avec des IP allouées dans le réseau Deutsche Telekom.

LocalSearch• Vous permet de rechercher avec les options à côté ou autour d’une

coordonnée géographique ou d’une ville

45 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Nouveau service - DeveloperGarden

•Fonctionnalités (suite)SendSMS

• Envoi d’un SMS ou d’un SMS Flash vers un numéro donné

SMSValidation• Vous pouvez valider un numéro à utiliser avec SendSMS

VoiceCall• Initie une conférence entre 2 participants

ConferenceCall• Vous pouvez configurer une conférence complète avec les

participants soit pour une conférence immédiate, soit pour une conférence à prévoir

46 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Nouveau service - DeveloperGarden

•Mettre en place une conférence :

47 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Nouveau service - WindowsAzure

•Windows Azure est le nom de la plateforme Software + Services de Microsoft

•Fonctionnalités :Interface vers l’API de stockage :

• Blobs

• Tables

Batch processing

• Queues

48 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.

Nouveau service– WindowsAzure

49 Insert->Header & Footer

© All rights reserved. Zend Technologies, Inc.50

Mises à jour de la documentation

Helping you educate yourself

© All rights reserved. Zend Technologies, Inc.

Documentation versionnée Versionnée par révision mineure (1.10,

1.9, 1.8, etc.) Recherche par version

© All rights reserved. Zend Technologies, Inc.

Nouveau moteur de rendu PhD (système de

documentation de PHP) est maintenant utilisé pour effectuer le rendu de la documentation en ligne ainsi que celle téléchargeable

Accélère la durée du rendu et fournit plus de flexibilité dans le rendu

Meilleure navigation

© All rights reserved. Zend Technologies, Inc.

Tutoriaux Nouvelle section du manuel : “Apprendre

Zend Framework” Contient le Quickstart ainsi que 8

tutoriaux additionnels Partie du référentiel ZF, ce qui implique :

Versionné Disponible à la traduction De nouveaux contenus peuvent être

ajoutés

© All rights reserved. Zend Technologies, Inc.54

© All rights reserved. Zend Technologies, Inc.

Notes de migration Nouvelle annexe avec une centralisation

des “Notes de migration” Notes de migration par version mineure

© All rights reserved. Zend Technologies, Inc.

Commentaires Commentaires dans le manuel, ala

php.net, ont été activés !

© All rights reserved. Zend Technologies, Inc.

Liens• Me contacter :

– http://twitter.com/mikaelkael

– http://mikaelkael.fr

• Tutoriel ZF 1.10 (présenté le 18 mai à TEKX) :

– http://joind.in/1562

• Bug Hunt (20 & 21 mai) :

– http://devzone.zend.com/article/12150-Announcing-Mays-ZF-Bug-Hunting-Days

• Prochain webinar (16 juin) : les décorateurs de Zend_Form

– http://www.zend.com/fr/company/news/event/webinar-tirer-parti-des-d-corateurs-zend-form

© All rights reserved. Zend Technologies, Inc.58

Merci ! Information et ressources :

http://framework.zend.com/

Recommended