zend framework 2

Post on 16-Jun-2015

2.011 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Les nouveautés ZF2 par rapport à ZF1

TRANSCRIPT

Intervenant: Benoît DURAND b.durand at epixelic dot com

Zend Framework 2(beta2)

21/12/2011 Développement

Architecture

ZF2 3

L’architecture de ZF1

1. Singletons2. Registres3. Dépendances codées « en dur »

21/12/2011

ZF2 4

Un nouveau cœur pour ZF2

1. Programmation orientée aspect2. SOLID3. Exploiter pleinement le protocole HTTP

21/12/2011

Autoload

ZF2 6

Autoload

1. Suppression des appels à require_once

21/12/2011

ZF2 7

Autoload

1. Suppression des appels à require_once2. Compatible PSR-0

21/12/2011

ZF2 8

Autoload

1. Suppression des appels à require_once2. Compatible PSR-03. Chargement par namespace, et par préfix

21/12/2011

ZF2 9

Autoload

1. Suppression des appels à require_once2. Compatible PSR-03. Chargement par namespace, et par préfix4. Chargement avec une classmap

21/12/2011

ZF2 10

Autoload

1. Suppression des appels à require_once2. Compatible PSR-03. Chargement par namespace, et par préfix4. Chargement avec une classmap

21/12/2011

Gain à l’exécution

+25% de base

+60 à 85% avec du cache d’opcode

Injection de dépendances

ZF2 12

Injection de dépendances

• Découpler les dépendances entre deux composants

• Respecter la séparation des responsabilités

21/12/2011

ZF2 13

Di : exemple (1)

// Dépendance forteclass Paginator{ public function __construct() { $this->adapter = new Array(); }}

21/12/2011

ZF2 14

Di : exemple (2)

// Dépendance faibleclass Paginator{ public function __construct(Adapter $adapter) { $this->adapter = $adapter; }}

21/12/2011

ZF2 15

Di : trois types de définitions

1. Constructeur2. Setter3. Annotation

21/12/2011

ZF2 16

Di : trois stratégies

1. A l’exécution2. Par compilation3. Builder

21/12/2011

Gestion par évènements

ZF2 18

Vocabulaire

1. Un event est une action2. Un listener est une fonction qui peut réagir à

un event3. Un EventManager est un objet qui agrège

des listeners pour un ou plusieurs events, et qui déclenche ces events

21/12/2011

ZF2 19

EventManager : exemple

use Zend\EventManager\EventManager;

$events = new EventManager;$events->attach(‘do’, function($e) { printf(‘Evènement %s avec les paramètres %s’, $e->getName(), json_encode($e->getParams()) );});

$params = array(‘foo’ => ‘bar’, ‘baz’ => ‘bat’);$events->trigger(‘do’, null, $params);// Affiche Evènement do avec les paramètres {"foo":"bar","baz":"bat"}

21/12/2011

MVC

ZF2 21

Architecture

• Une application est composée d’un router, d’un locator, et d’un event manager

• Une route doit retourner le nom d’un contrôleur

• Le contrôleur est récupéré depuis le locator, et exécuté

• Route et dispatch sont deux events

21/12/2011

ZF2 22

Gotta dispatch them all

• Applications MVC

21/12/2011

ZF2 23

Gotta dispatch them all

• Applications MVC• Classes serveur (Amf, Json, Soap, XmlRpc)

21/12/2011

ZF2 24

Gotta dispatch them all

• Applications MVC• Classes serveur (Amf, Json, Soap, XmlRpc)• Clients HTTP

21/12/2011

Modules

ZF2 26

Définition

« Un module est un ensemble de classeset d’autres fichiers qui résout

un problème spécifiqueau sein d’une application métier. »

ZF2 RFC

21/12/2011

ZF2 27

Architecture

• C’est l’unité de base d’une application MVC ZF2

21/12/2011

ZF2 28

Architecture

• C’est l’unité de base d’une application MVC ZF2

• C’est simple à créer :– Un espace de nom

21/12/2011

ZF2 29

Architecture

• C’est l’unité de base d’une application MVC ZF2

• C’est simple à créer :– Un espace de nom– Une seule classe obligatoire : Module

21/12/2011

ZF2 30

Exemple

// modules/EpxBlog/Module.phpnamespace EpxBlog;

class Module {}

21/12/2011

ZF2 31

Module.php : cas d’utilisation

// modules/EpxBlog/Module.phpnamespace EpxBlog;

class Module{ // Chargement automatique des ressources public function getAutoloaderConfig() {}

// Configuration de base du module public function getConfig() {}}21/12/2011

ZF2 32

Que contient un module ?

• Du code PHP (avec ou sans MVC)

21/12/2011

ZF2 33

Que contient un module ?

• Du code PHP (avec ou sans MVC)• Des fichiers statiques (styles, javascript,

images, etc)

21/12/2011

ZF2 34

Que contient un module ?

• Du code PHP (avec ou sans MVC)• Des fichiers statiques (styles, javascript,

images, etc)• Des tests unitaires

21/12/2011

ZF2 35

Que contient un module ?

• Du code PHP (avec ou sans MVC)• Des fichiers statiques (styles, javascript,

images, etc)• Des tests unitaires• La documentation

21/12/2011

ZF2 36

Que contient un module ?

• Du code PHP (avec ou sans MVC)• Des fichiers statiques (styles, javascript,

images, etc)• Des tests unitaires• La documentation• Ce que vous voulez

21/12/2011

ZF2 37

Contrôleur

namespace EpxBlog\Controller;

use Zend\Mvc\Controller\ActionController;

class ArticleController extends ActionController{ public function viewAction() { $query = $this->getRequest()->query(); return array('titre' => $query->get('slug')); }}

21/12/2011

ZF2 38

Vueuse Zend\EventManager\EventCollection, Zend\EventManager\ListenerAggregate;

class ViewListener implements ListenerAggregate{ public function attach(EventCollection $events) { $events->attach('dispatch', array( $this, 'renderView', -100 )); }

/* … */}

21/12/2011

ZF2 39

Dépendance

namespace EpxBlog\Controller;

use Zend\Mvc\Controller\ActionController, PDO as DbAdapter;

class ArticleController extends ActionController{ public function setDbAdapter(DbAdapter $dbAdapter) { $this->dbAdapter = $dbAdapter; }}

21/12/2011

ZF2 40

Configuration via le Di

// config/autoload/database.phpreturn array( ‘di’ => array( ‘PDO’ => array( ‘parameters’ => array( ‘dsn’ => ‘mysql:dbname=XXXX;host=XXXX’, ‘username’ => ‘XXXX’, ‘password’ => ‘XXXX’, ) ) ));

21/12/2011

Git 41

Liens

• http://framework.zend.com/zf2• https://github.com/zendframework• http://packages.zendframework.com/• http://modules.zendframework.com/

11/04/2011

ZF2 42

Questions ?

21/12/2011

top related