+ All Categories
Home > Technology > Diaporama du sfPot Lillois du 20 mars 2014

Diaporama du sfPot Lillois du 20 mars 2014

Date post: 20-Jun-2015
Category:
Upload: les-tilleulscoop
View: 2,293 times
Download: 0 times
Share this document with a friend
Description:
Diaporama diffusé lors du sfPot Lillois du 20 mars 2014. Conférence animée par Kévin Dunglas, co-fondateur de Les-Tilleuls.coop et Alexandre Salomé, consultant chez Sensiolabs.
Popular Tags:
29
Réaliser des applications innovantes avec Symfony2 Symfony2, API REST et Javascript
Transcript
Page 1: Diaporama du sfPot Lillois du 20 mars 2014

Réaliser des applications innovantes avec Symfony2Symfony2, API REST et Javascript

Page 2: Diaporama du sfPot Lillois du 20 mars 2014

Qui sommes-nous ?Alexandre Salomé

Consultant

@alexandresalome

Kévin DunglasCo-fondateur

@dunglas

Page 3: Diaporama du sfPot Lillois du 20 mars 2014

Architecture

Page 4: Diaporama du sfPot Lillois du 20 mars 2014

API REST

- Exposer les données de l’application- HTTP + JSON/XML- Plus léger que SOAP (adapté pour le mobile)- RESTful

curl -X POST http://example.com/api/user

--data '{"username": "alice", "fullname": "Alice"}'

Page 5: Diaporama du sfPot Lillois du 20 mars 2014

SPA (Single Page Application)

- Application JavaScript- S’exécute côté client- Récupère et modifie les données via l’API REST- Seules les données utiles transitent

Page 6: Diaporama du sfPot Lillois du 20 mars 2014

Application

apps mobiles

site webresponsive

autres applications et sites

(ERP, logistique, partenaires…)

applicationFacebook

API REST

Internet

Page 7: Diaporama du sfPot Lillois du 20 mars 2014

Stockage de données

Application Serveur Web

Internet

Applications tierces

Fichiers

Page 8: Diaporama du sfPot Lillois du 20 mars 2014

Ecosystème

Page 9: Diaporama du sfPot Lillois du 20 mars 2014

- PHP 5.3, 5.4, 5.5 (namespaces, traits)- Composer- Frameworks / CMS / PSR (PHP-FIG)- PHPUnit / phpspec / Behat

PHP-FIG : http://www.php-fig.orgAwesome PHP : https://github.com/ziadoz/awesome-php

PHP

Page 10: Diaporama du sfPot Lillois du 20 mars 2014

- Framework “full stack”- Découplé en composants- Axé fiabilité (tests), sécurité et performance- Design moderne (POO, MVC, DIC, Events…)- Intègre des bibliothèques tierces reconnues : Twig, Swiftmailer, Doctrinehttp://symfony.com / http://github.com/symfony/symfony

Symfony2

Page 11: Diaporama du sfPot Lillois du 20 mars 2014

AngularJS

- Framework JavaScript MVC complet- Maintenu par Google- Communauté importante- S’intègre parfaitement avec Symfony

http://angularjs.org/

Page 12: Diaporama du sfPot Lillois du 20 mars 2014

Backbone.js

- Bibliothèque JavaScript- Synchronise la couche modèle de l’application cliente avec une API REST- S’intègre facilement dans du code JS existant- S’intègre parfaitement avec Symfony

http://backbonejs.org/

Page 13: Diaporama du sfPot Lillois du 20 mars 2014

Alternatives

- Ember.js :http://emberjs.com/

- Chaplin.js :http://chaplinjs.org/

Et bien d’autres.

Page 14: Diaporama du sfPot Lillois du 20 mars 2014

Implémentation

Page 15: Diaporama du sfPot Lillois du 20 mars 2014

Modèle relationnel objet

- Doctrine : http://www.doctrine-project.org/ (ORM + ODM + O*M)- Propel : http://propelorm.org/- PHPCR : http://phpcr.github.io/- ElasticSearch : http://www.elasticsearch.org/guide/en/elasticsearch/client/php-api/current/

Voir aussi https://github.com/ziadoz/awesome-php#orm-and-datamapping

Page 16: Diaporama du sfPot Lillois du 20 mars 2014

Sérialisation des objetsreturn new JsonResponse($object->toArray());

Composant Serializerhttp://symfony.com/fr/doc/current/components/serializer.html

JMSSerializerBundlehttps://github.com/schmittjoh/JMSSerializerBundle

Page 17: Diaporama du sfPot Lillois du 20 mars 2014

Exposer une API REST- FOSRestBundle : https://github.com/FriendsOfSymfony/FOSRestBundle

- NelmioApiDocBundle :https://github.com/nelmio/NelmioApiDocBundle

- JMSSerializerBundle :http://jmsyst.com/bundles/JMSSerializerBundle

Page 18: Diaporama du sfPot Lillois du 20 mars 2014

Envoyer des données

- “Désérialisation” du JSON ou du XML :JMSSerializerBundle

- Validation des données et mise à jour des objets :Symfony Form framework

Page 19: Diaporama du sfPot Lillois du 20 mars 2014

Gestion des assets

- Less, SASS- Minify, Uglify, YUI Compressor, …- Bower

Avec Symfony : AsseticSans Symfony : Grunt + Yeoman

Page 20: Diaporama du sfPot Lillois du 20 mars 2014

Show me the code

Page 21: Diaporama du sfPot Lillois du 20 mars 2014

Exemple KISS /**

* @Route(path="/user/{id}", name="user_show")

*/

public function showAction($id)

{

$user = $this

->getDoctrine()

->getRepository('AcmeDemoBundle:User')

->find($id)

;

if (!$user) {

throw $this->createNotFoundException(sprintf('User %s not found.', $id));

}

return new JsonResponse($user->toArray());

}

Page 22: Diaporama du sfPot Lillois du 20 mars 2014

Exemple (encore plus court) /**

* @Route(path="/user/{id}", name="user_show")

*/

public function showAction(User $user)

{

return new JsonResponse($user->toArray());

}

Page 23: Diaporama du sfPot Lillois du 20 mars 2014

Behat-LauncherCôté serveur (80%)- Silex- Composant Serializer

Côté client (20%)- Twitter Bootstrap- AngularJS- Internationalisation- Grunthttp://github.com/alexandresalome/behat-launcher

Page 24: Diaporama du sfPot Lillois du 20 mars 2014

DunglasTodoMVCBundle

Côté serveur (50%)- Symfony- FOSRest / JMSSerializer

Côté client (50%)- Backbone.js et Chaplin.js- CoffeeScript

http://github.com/dunglas/DunglasTodoMVCBundle

Page 25: Diaporama du sfPot Lillois du 20 mars 2014

Aller plus loin

Page 26: Diaporama du sfPot Lillois du 20 mars 2014

Référencement

- Google ne sait pas exécuter le JavaScript- Les SPA ne sont pas référencées par défaut

Solution : Prerender.io (snapshots)http://prerender.iohttps://github.com/rjanot/YuccaPrerenderBundle

Page 27: Diaporama du sfPot Lillois du 20 mars 2014

Sécurité

- Protection CSRF d’une SPAhttps://github.com/dunglas/DunglasAngularCsrfBundle

- Utilisation de l’objet JsonResponseJSON Vulnerability

Page 28: Diaporama du sfPot Lillois du 20 mars 2014

Hypermedia API

Découverte dynamique des serveurs par les clients :

- HATEOAS (HAL+JSON)http://hateoas-php.org/- Hydra / JSON-LD http://www.markus-lanthaler.com/hydra/

Page 29: Diaporama du sfPot Lillois du 20 mars 2014

Des questions ?Une bière !


Recommended