3. • Sergi González
• Chief Trolling Officer
• IngenieroTécnico Sistemas
• Software Developer con 7
años de experiencia
• Akamon
• Atrápalo
@SergiGP
linkedin.com/in/sergigp
sergi@sergigp.com
4. DDD as an implementation
detail @ PHP Barcelona
https://www.youtube.com/watch?v=LT0M3o7Mk6g
Mejorando en Git @ Software
Craftmanship BCN
http://sergigp.com/slides-de-mejorando-en-git@SergiGP
linkedin.com/in/sergigp
sergi@sergigp.com
8. AKAMON
• Más de 60 trabajadores (30 developers)
• 12 millones de € facturados en 2014
• Transparencia
• Lean development
• Flexibilidad
• Self empowerment
13. SYMFONY 2
• Componentes vs Full Stack Framework
• DRY, SOLID,TDD, KISS… WTF?!
• Configuration vs Convention
• Comunidad y ecosistema
• Es PHP para lo bueno y para lo malo
14. COMPONENTES SYMFONY 2
HTTP Foundation
Console
Debug
Yaml
DOM Crawler
Event Dispatcher
Filesystem
Form
Routing
Templating
Security
Dependency
Injection
… 31 componentes
16. SYMFONY 2 EN AKAMON
• Varias aplicaciones en una
• Nuestra Lógica de negocio no tiene nada que ver
con Sf2
17. COMPONENTES SYMFONY 2
HTTP Foundation
Console
Debug
Yaml
DOM Crawler
Event Dispatcher
Filesystem
Form
Routing
Templating
Security
Dependency
Injection
18. UN POQUITO DE HTTP
Url
Headers
Data
Verbo
HTTP Request
HTTP Response
• HTTP Request simplificada
• Verbos: GET, POST, PUT, DELETE, …
• Headers: Cookies, autenticación, …
• Data: Submit de un formulario (opcional)
19. UN POQUITO DE HTTP
twitter.com/i/tweet/create
…
status=Toma+HTTP+Request!
POST
20. FOS REST BUNDLE
• HTTPVerbs
- GET - Lee
- POST - Crea
- PUT - Actualiza
- DELETE - Borrar
Más sobre REST en: Teach a dog to REST
GET /users?fecha_registro=20150601
POST /users { id: 2, nombre: sergi }
PUT /users/2 { nombre: pepito }
DELETE /users/2
21. BUNDLES QUE USAMOS
• Monolog - Logs
• JMS Serializer - Serializar responses (Obj -> json)
• Nelmio Api Doc - Documentar Api
• Gaufrette -Virtual Filesystem (FTP, S3…)
22. COSAS QUE NO HACEMOS
• No reinventamos la rueda
• No tenemos miedo a cambiar (Testing)
• No nos acoplamos a Symfony
24. CQRS
• Command and Query Responsibility Segregation
• Dame cosasVs Haz cosas
Query Command
¿Usuarios registrados ayer? Registra un usuario
¿Pagos de Sergi? Borra un usuario
¿Que bonos disponibles tiene Sergi? Crea un pago
Da 100 fichas a Sergi
25. LA ODISEA DE LA
PETICIÓN HTTP
• Poder registrar un usuario
• Abrirle una cuenta de economía para que pueda tener fichas
• Enviarle un email de bienvenida
27. EVENTOS DE DOMINIO
• Haz algo cuando pase algo
• Cuando se registre un usuario:
• Mandamos un mail de bienvenida. (asíncrono)
• Abrimos una cuenta de economía. (síncrono)
Evento
Subscriber
Usuario registrado
Subscriber
Mandar mail
Cuenta economia
DEP
33. EJERCICIO
• Un usuario quiere jugar a nuestro juego
• Le creamos una cuenta de usuario
• Le creamos una cuenta de economia para que pueda
apostar fichas
• Le damos un Welcome Bonus para que empiece a
jugar
36. PARA QUE NOTE PIERDAS…
1. Test de aceptación del Welcome Bonus (WB) fallando
2. Subscriber para crear WB cuando se abre una cuenta de economia
3. Procesador transacciones de economia
4. Guardar el nuevo balance
5. Usando el service container para configurar los subscribers *
6. Publicando un evento de dominio cuando se actualiza el balance