You must be either using a mobile browser or an ancient one!

For the best experience using impress.js, please use the latest Chrome, Safari, or Firefox Browser.

Quand eZ Publish rencontre

Symfony2

PHP Tour Nantes 2012

#phptournantes

Julien FEMIA

Consultant technique PHP @ Clever Age

Formateur PHP @ Clever Institut

Bordeaux, FR

@yulz__

https://joind.in/7268

Clever Age

Paris, Bordeaux, Lyon, Nantes, et Genève

Environ 100 Collaborateurs

http://www.clever-age.com

Si je suis la aujourd'hui...
C'est pour parler un peu de Symfony 2...
mais surtout de Drupal d'eZ Publish !
Ok cool...
Mais c'est quoi eZ Publish ?

« Une plateforme de choix pour gérer tout type de contenu, venant de tout type de source et le distribuer sur n'importe quel support »

Gabriele Viebach - CEO eZ Systems

eZ Systems, quelques chiffres :
  • Créée en 1999
  • Implantations en France, UK, Allemagne, Japon, ...
  • Environ 130 employés
eZ Publish, quelques informations :
  • CMF Open Source développé en... PHP !
  • Hautement extensible
ez references

eZ Publish 4

Etat des lieux

Basé sur PHP4

(Pauvre en concepts de POO, variables globales, ...)

API plutôt faible

(Difficile à prendre en main, doc inexistante, ...)

Difficultés des tests !

(unitaires, ou fonctionnels :()

ex1
ex2
ex3
fuu

eZ Publish 5

Pourquoi une nouvelle version ?

Scalabilité & Performance

Simplifier la maintenance

Rattraper son retard

Requirements

Rien que ca...

skeptic

Requirements

skeptic
1. Développement maison
2. Zeta Components
3. Zend Framework 2
4. Symfony 2 Framework

Symfony 2 Framework

Ok, mais quel(s) composant(s) ?

Twig
Dependancy Injection
HttpFoundation
HttpKernel
Routing

Symfony 2 Framework

Attrapez les tous !

eZ Publish 5

En route pour le Kilimanjaro !

Un peu de grammaire... (1/2)
eZ Publish 4eZ Publish 5
(Content) objectContent
(Content) classContent Type
(Content) attributeField
(Content) class attributeField Definition
Data typeField Type
NodeLocation
(Content) class groupContent Type Group
Un peu de grammaire... (2/2)
eZ Publish 4eZ Publish 5
ModuleController
Module viewController action (method)
FetchSub request (render)
Template operatorFilter + function
Template functionTag
ExtensionBundle
ObjectStateObjectState
Repositories

eZ Publish 5.x meta repository: https://github.com/ezsystems/ezpublish5

eZ Publish 5.x Core:https://github.com/ezsystems/ezp-next

eZ Publish 4.x “LS” repository:https://github.com/ezsystems/ezpublish

Project directory (1/2)
Project directory (2/2) api1

Backward Compatibility

Ouat is ze fuque ?

Requirements

challenge
Challenge accepted
Legacy Kernel

Exposé grâce à un service

Le tout fonctionne grâce aux closures introduites dans PHP 5.3

Template

Communication entre le nouveau et l'ancien système

Utilisable grâce à un Twig Operator

legacy-template
Routing

Fallback du nouveau vers l'ancien système

La requète est redirigée automatiquement...

Pour activer la nouvelle route, il suffit... de la créér!

API'S

Le coeur du système !

Public API

Créée à base d'interfaces...

Permet de faire abstraction de la couche de bas niveau d'eZ

Permet de faire toutes les manipulations existantes sur les différents objets

Public API : Avant...
p-api1
Public API : Après...
p-api2
REST API v2

Permet de faire le lien entre développement et la Public API.

Supporte XML et JSON

REST API v2 - Server SDK

Authentification native (OAuth2, SSL Client Certificate) ...

... basée sur les users et les rôles d'eZ Publish

GET /content/objects: liste les objets

POST /content/objects: créé un nouvel objet

DELETE /content/objects/x: supprime un objet X

PATCH /content/objects/x: modifie un objet X

REST API v2 - Client SDK

Basé sur la Public API

PHP SDK

Javascript SDK, peut être, un jour, ...

... Et iOS aussi, et pourquoi pas Android !

eZ Publish 5.x

Hit the road Jack...

En cours d'implémentation...

Mais alors...
Est-ce que je peux quand même l'utiliser?
Ca dépend !
Il ne faut pas oublier de distinguer 2 cas...

Questions ?

Merci !

http://yulz.github.com/ezpublish5-symfony2/

http://joind.in/