SlideShare a Scribd company logo
Nanos gigantium
humeris insidentes
DESIGN PATTERN INSIDE SYMFONY2
GIANTS
liurrrgio
GIULIO DE DONATO

GIORGIO CEFARO

@liuggio

@giorrrgio
DESIGN PATTERN?
DESIGN PATTERN

A solution of a
problem in a context
James O. Coplien (1994)
DESIGN PATTERN

“ For me a pattern is
primarily a way to chunk up
advice about a topic “
#1
FRONT CONTROLLER
INTENT:

A controller that handles
all requests for a Web site
FRONT CONTROLLER
web/app.php
FRONT CONTROLLER ... and ?
web/app.php
INTENT:

DECORATOR

Attach additional responsibilities
to an object dynamically.
Decorators provide a flexible
alternative to subclassing for
extending functionality.
DECORATOR
SymfonyComponentHttpKernelHttpCacheHttpCache
U DUNNO
HttpKernelInterface?
SymfonyComponentHttpKernelHttpKernelInterface
KERNEL AND SERVICE CONTAINER
SymfonyComponentHttpKernelKernel
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
INVERSION OF CONTROL
INTENT:

Inversion of control is a style
of software construction where
reusable code controls the execution
of problem-specific code
INVERSION OF CONTROL

1988
“ Inversion of control is a common
characteristic of frameworks,
so saying that these lightweight containers
are special because they use inversion of
control is like saying my car is special
because it has wheels.”
INVERSION OF CONTROL
HOLLYWOOD PRINCIPLE:

“ DON’T CALL US
WE’LL CALL YOU ”
INVERSION OF CONTROL
PICO CONTAINER DEFINITION:

"Dependency Injection is where
components are given their
dependencies through their
constructors, methods, or directly
into fields."
Dependency injection allows the
removal of hard-coded dependencies
and makes it possible to change
them, whether at run-time or compiletime.
INJECTING A TRANSPORT INSIDE A MAILER
- FIGHT OF THE DAY -

SERVICE CONTAINER
vs
DEPENDENCY INJECTION
INVERSION OF CONTROL
INTENT:

DECOUPLE DECOUPL
DECOUPLE
DECOUPLE
DECOUPLE
DECOUPLE

DECOUPLE
DECOUPLE
DECOUPLE

DECOUPLE
DEPENDENCY INJECTION AND FRAMEWORKS
DI

??

Grafico con spaghetti, infermiera che fa la
puntura, lista della spesa per l'antipattern
service locator, qualcosa di galattico per
l'enhanced injection (tipo pulp fiction)

http://www.loosecouplings.com/2011/01/dependency-injection-using-di-container.html

DIC
FACTORY METHOD
INTENT:

Define an interface for creating an object,
but let subclasses decide which class
to instantiate.
Factory Method lets a class defer instantiation to
subclasses.
FACTORY METHOD - DO IT WITH THE DIC
ABSTRACT FACTORY
INTENT:

Provide an interface for creating
families of related or dependent
objects without
specifying their concrete classes.
ABSTRACT FACTORY - SecurityFactoryInterface
SymfonyBundleSecurityBundleDependencyInjectionSecurityFactorySecurityFactoryInterface
INTENT:

BUILDER

Separate the construction of a
complex object from its
representation so that the same
construction process can create
different representations.
FORM BUILDER
SymfonyComponentFormFormBuilderInterface
FORM BUILDER
PROXY
INTENT:

Provide a surrogate or
placeholder for another
object to control access to it.
DOCTRINE PROXY
app/cache/doctrine/odm/Proxies/ ...
MEDIATOR
INTENT:

Define an object that encapsulates how a set
of objects interact. Mediator promotes loose
coupling by keeping objects from referring to
each other explicitly, and it lets you vary their
interaction independently.
ner

file

Kernel :: REQUEST

rLi

ste

gm
ent
Fra

ste

Li
on

ssi

Se

Pro

List
ene

r

MEDIATOR

er

ten
rLis

te

Rou

ner

EVENT DISPATCHER
Loca

leLis

tene

r

all

ew

Fir
STRATEGY aka POLICY
INTENT:

Defines a family of algorithms, encapsulate
each one, and make them interchangeable.
Strategy lets the algorithm vary independently
from clients that use it.
FragmentRendererInterface
SymfonyComponentHttpKernelFragmentFragmentRendererInterface
Fragment Renderers
SymfonyComponentHttpKernelFragment...
DATA MAPPER
INTENT:

A layer of Mappers that moves data between
objects and a database while keeping them
independent of each other and the mapper
itself.
VISITOR
INTENT:

Represent an operation to be performed on
the elements of an object structure.
Visitor lets you define a new operation without
changing the classes of the elements on which
it operates.
VALIDATION VISITOR
SymfonyComponentValidator..
MVC
er

n
Co

ll
tro

w
Vie

el

d
Mo
AbstractionInversion,
AccidentalComplexity,
AccidentalInclusion,
AddingEpicycles,
AlcoholFueledDevelopment,
AmbiguousViewpoint, AnalogyBreakdownAntiPattern, AnalysisParalysis, AnAthena, AppointedTeam, ArchitectsDontCode,
ArchitectsPlayGolf,
ArchitectureAsRequirements,
ArchitectureByImplication,
AsynchronousUnitTesting,
AutogeneratedStovepipeAntiPattern, BandAid, BearTrap?, BigBallOfMud, BlameStorming, BlowhardJamboree, BoatAnchor,
CargoCult, CarParkSyndrome, CascadingDialogBoxesAntiPattern, ContinuousObsolescence, ConfusionOfObjectives, ControlFreak,
CopyAndPasteProgramming, CornCob, CoverYourAssets, CreepingFeaturitis, CrciCards, CryptoCracy, DeadEnd, DeathByPlanning,
DecisionByArithmetic, DesignByCommittee, DesignForTheSakeOfDesign., DiscordantRewardMechanisms, DoerAndKnower,
DryWaterhole, EgalitarianCompensation, EmailIsDangerous, EmperorsNewClothes, EmpireBuilding, ExceptionFunnel,
FalseEconomy, FalseSurrogateEndpoint, FearOfSuccess, FireDrill, FloatingPointCurrency, FloatingPointFractions, FoolTrap,
FunctionalDecomposition,
FungibleTeams,
FungibleProjectManager,
GeographicallyDistributedDevelopment,
GiveMeEstimatesNow, GlassWall, GodClass, GoldenHammer, GroundHogDayProject, HalfDoneIsEnough, HeirApparent,
HeroCulture, HiddenRequirements, IdiotProofProcess., IfItIsWorkingDontChange, IfOk, InappropriateTechnicalObjective,
InputKludge,
ItsAnOperatorProblem,
JobKeeper,
JumbleAntipattern,
JunkyardCoding,
KillTwoBirdsWithOneStone,
KitchenSinkDesign, LavaFlow, LeadingRequest, MagicContainer, ManagerControlsProcess, MushroomManagement, Nationalism,
NetNegativeProducingProgrammer, NotInventedHere, NotTheAppropriateProtocol, NullFlag, OverGeneralizationOfBusinessLogic,
OverUseOfPatterns,
PathOfLeastResistance,
ParsingHtmlWithRegex,
PassingNullsToConstructors,
PlugCompatibleInterchangeableEngineers, PoliticsOrientedArchitecture, PolterGeists, ReinventingTheWheel, ReinventTheWheel,
RollYourOwnDatabase, RequirementsTossedOverTheWall, RubeGoldbergMachine, ScapeGoat, SeagullManagement, SecretSociety,
SellingaProductYouCantRealize,
ShootTheMessenger,
SingleFunctionExitPoint,
SmokeAndMirrors,
SoftwareMerger,
SpaghettiCode, SpecifyNothing, StandingOnTheShouldersOfMidgets, StovepipeAntiPattern, StringWithoutLength, SumoMarriage,
SweepItUnderTheRugAntiPattern,
SwissArmyKnife,
ThatsNotReallyAnIssue,
TheBlob,
TheCustomersAreIdiots,
TheGrandOldDukeOfYork, TheProcessIsTheDeliverable, TheyUnderstoodMe, ThrownOverTheWall, TowerOfVoodoo, TrainTheTrainer,
UntestedButFinished,
VendorLockIn,
ViewgraphEngineering,
VietnamWarAntiPattern,
VoodooChickenCoding,
WalkingThroughaMineField, WarmBodies, WeAreIdiots, WolfTicket, YetAnotherMeetingWillSolveIt, YetAnotherThreadWillSolveIt,

ANTI-PATTERN
DESIGN
FOR THE SAKE OF DESIGN
“I only ship the perfection"
ANTI PATTERNS
OVER ENGINEERING
OVERUSE OF PATTERNS
ANTI PATTERNS
THE BLOB
BIG BALL OF MUD
ANTI PATTERNS
GLOBALIZING
STANDING ON THE SHOULDER OF THE MIDGETS
ANTI PATTERNS
REINVENTING THE WHEEL
NIH SYNDROME
ANTI PATTERNS
E
D
O
C
SPAGHETTI WITHIMEATBALL
L
IO CODE
LASAGNA
V
A
R
SPAGHETTI CODE
code spends
more time being read
and maintained than
being created
DECOUPLE
DECOUPLE
DECOUPLE.
GOOD QUESTIONS
ARE BETTER THAN
GOOD ANSWERS
REFERENCES
1.

https://gist.github.com/giorrrgio/d4395afe470a1ad223e0

2.

http://12factor.net

3.

http://obvioushints.blogspot.it/2008/12/symfony-design-patterns.html

4.

http://c2.com/cgi/wiki?AntiPatternsCatalog

5.

http://martinfowler.com/bliki/InversionOfControl.html

6.

http://martinfowler.com/articles/injection.html
Ad

Recommended

Create Your Own Framework by Fabien Potencier
Create Your Own Framework by Fabien Potencier
Himel Nag Rana
 
Dependency Injection, Zend Framework and Symfony Container
Dependency Injection, Zend Framework and Symfony Container
Diego Lewin
 
Hands-on with the Symfony2 Framework
Hands-on with the Symfony2 Framework
Ryan Weaver
 
Symony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP Framework
Ryan Weaver
 
IoC with PHP
IoC with PHP
Chris Weldon
 
Zend Studio Tips and Tricks
Zend Studio Tips and Tricks
Roy Ganor
 
Being Dangerous with Twig
Being Dangerous with Twig
Ryan Weaver
 
Being Dangerous with Twig (Symfony Live Paris)
Being Dangerous with Twig (Symfony Live Paris)
Ryan Weaver
 
Building Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJS
Antonio Peric-Mazar
 
Build powerfull and smart web applications with Symfony2
Build powerfull and smart web applications with Symfony2
Hugo Hamon
 
Symfony2: Get your project started
Symfony2: Get your project started
Ryan Weaver
 
Ecto and Phoenix: Doing Web With Elixir
Ecto and Phoenix: Doing Web With Elixir
Yurii Bodarev
 
Dependency Injection: Make your enemies fear you
Dependency Injection: Make your enemies fear you
Ryan Weaver
 
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
Rich Helton
 
Using API Platform to build ticketing system #symfonycon
Using API Platform to build ticketing system #symfonycon
Antonio Peric-Mazar
 
Twig: Friendly Curly Braces Invade Your Templates!
Twig: Friendly Curly Braces Invade Your Templates!
Ryan Weaver
 
Using API platform to build ticketing system (translations, time zones, ...) ...
Using API platform to build ticketing system (translations, time zones, ...) ...
Antonio Peric-Mazar
 
Workshop: Symfony2 Intruduction: (Controller, Routing, Model)
Workshop: Symfony2 Intruduction: (Controller, Routing, Model)
Antonio Peric-Mazar
 
Dexterity in 15 minutes or less
Dexterity in 15 minutes or less
rijk.stofberg
 
Silex, the microframework
Silex, the microframework
Inviqa
 
Seven Versions of One Web Application
Seven Versions of One Web Application
Yakov Fain
 
Learning C# iPad Programming
Learning C# iPad Programming
Rich Helton
 
Some tips to improve developer experience with Symfony
Some tips to improve developer experience with Symfony
tyomo4ka
 
Testing untestable code - oscon 2012
Testing untestable code - oscon 2012
Stephan Hochdörfer
 
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - Wisembly
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - Wisembly
Guillaume POTIER
 
Real World Dependency Injection - PFCongres 2010
Real World Dependency Injection - PFCongres 2010
Stephan Hochdörfer
 
Hello World on Slim Framework 3.x
Hello World on Slim Framework 3.x
Ryan Szrama
 
Nanos gigantium humeris insidentes (design patterns inside symfony 2)
Nanos gigantium humeris insidentes (design patterns inside symfony 2)
Giorgio Cefaro
 
Symfony2 from the Trenches
Symfony2 from the Trenches
Jonathan Wage
 
Dependency Injection in Drupal 8
Dependency Injection in Drupal 8
katbailey
 

More Related Content

What's hot (19)

Building Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJS
Antonio Peric-Mazar
 
Build powerfull and smart web applications with Symfony2
Build powerfull and smart web applications with Symfony2
Hugo Hamon
 
Symfony2: Get your project started
Symfony2: Get your project started
Ryan Weaver
 
Ecto and Phoenix: Doing Web With Elixir
Ecto and Phoenix: Doing Web With Elixir
Yurii Bodarev
 
Dependency Injection: Make your enemies fear you
Dependency Injection: Make your enemies fear you
Ryan Weaver
 
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
Rich Helton
 
Using API Platform to build ticketing system #symfonycon
Using API Platform to build ticketing system #symfonycon
Antonio Peric-Mazar
 
Twig: Friendly Curly Braces Invade Your Templates!
Twig: Friendly Curly Braces Invade Your Templates!
Ryan Weaver
 
Using API platform to build ticketing system (translations, time zones, ...) ...
Using API platform to build ticketing system (translations, time zones, ...) ...
Antonio Peric-Mazar
 
Workshop: Symfony2 Intruduction: (Controller, Routing, Model)
Workshop: Symfony2 Intruduction: (Controller, Routing, Model)
Antonio Peric-Mazar
 
Dexterity in 15 minutes or less
Dexterity in 15 minutes or less
rijk.stofberg
 
Silex, the microframework
Silex, the microframework
Inviqa
 
Seven Versions of One Web Application
Seven Versions of One Web Application
Yakov Fain
 
Learning C# iPad Programming
Learning C# iPad Programming
Rich Helton
 
Some tips to improve developer experience with Symfony
Some tips to improve developer experience with Symfony
tyomo4ka
 
Testing untestable code - oscon 2012
Testing untestable code - oscon 2012
Stephan Hochdörfer
 
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - Wisembly
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - Wisembly
Guillaume POTIER
 
Real World Dependency Injection - PFCongres 2010
Real World Dependency Injection - PFCongres 2010
Stephan Hochdörfer
 
Hello World on Slim Framework 3.x
Hello World on Slim Framework 3.x
Ryan Szrama
 
Building Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJS
Antonio Peric-Mazar
 
Build powerfull and smart web applications with Symfony2
Build powerfull and smart web applications with Symfony2
Hugo Hamon
 
Symfony2: Get your project started
Symfony2: Get your project started
Ryan Weaver
 
Ecto and Phoenix: Doing Web With Elixir
Ecto and Phoenix: Doing Web With Elixir
Yurii Bodarev
 
Dependency Injection: Make your enemies fear you
Dependency Injection: Make your enemies fear you
Ryan Weaver
 
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
Rich Helton
 
Using API Platform to build ticketing system #symfonycon
Using API Platform to build ticketing system #symfonycon
Antonio Peric-Mazar
 
Twig: Friendly Curly Braces Invade Your Templates!
Twig: Friendly Curly Braces Invade Your Templates!
Ryan Weaver
 
Using API platform to build ticketing system (translations, time zones, ...) ...
Using API platform to build ticketing system (translations, time zones, ...) ...
Antonio Peric-Mazar
 
Workshop: Symfony2 Intruduction: (Controller, Routing, Model)
Workshop: Symfony2 Intruduction: (Controller, Routing, Model)
Antonio Peric-Mazar
 
Dexterity in 15 minutes or less
Dexterity in 15 minutes or less
rijk.stofberg
 
Silex, the microframework
Silex, the microframework
Inviqa
 
Seven Versions of One Web Application
Seven Versions of One Web Application
Yakov Fain
 
Learning C# iPad Programming
Learning C# iPad Programming
Rich Helton
 
Some tips to improve developer experience with Symfony
Some tips to improve developer experience with Symfony
tyomo4ka
 
Testing untestable code - oscon 2012
Testing untestable code - oscon 2012
Stephan Hochdörfer
 
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - Wisembly
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - Wisembly
Guillaume POTIER
 
Real World Dependency Injection - PFCongres 2010
Real World Dependency Injection - PFCongres 2010
Stephan Hochdörfer
 
Hello World on Slim Framework 3.x
Hello World on Slim Framework 3.x
Ryan Szrama
 

Similar to Design pattern in Symfony2 - Nanos gigantium humeris insidentes (20)

Nanos gigantium humeris insidentes (design patterns inside symfony 2)
Nanos gigantium humeris insidentes (design patterns inside symfony 2)
Giorgio Cefaro
 
Symfony2 from the Trenches
Symfony2 from the Trenches
Jonathan Wage
 
Dependency Injection in Drupal 8
Dependency Injection in Drupal 8
katbailey
 
Symfony2 - from the trenches
Symfony2 - from the trenches
Lukas Smith
 
Design patterns illustrated 010PHP
Design patterns illustrated 010PHP
Herman Peeren
 
Dependency injection Drupal Camp Wrocław 2014
Dependency injection Drupal Camp Wrocław 2014
Greg Szczotka
 
Symfony Components 2.0 on PHP 5.3
Symfony Components 2.0 on PHP 5.3
Fabien Potencier
 
Learning Symfony2 by practice
Learning Symfony2 by practice
Vytautas Beliunas
 
Design patterns illustrated-2015-03
Design patterns illustrated-2015-03
Herman Peeren
 
Symfony 4 Workshop - Limenius
Symfony 4 Workshop - Limenius
Ignacio Martín
 
Symfony 2
Symfony 2
Kris Wallsmith
 
Symfony metabook 2.0
Symfony metabook 2.0
Rengga Aditya
 
Learning Php Design Patterns William Sanders
Learning Php Design Patterns William Sanders
arzunakuuse94
 
The IoC Hydra
The IoC Hydra
Kacper Gunia
 
DIC To The Limit – deSymfonyDay, Barcelona 2014
DIC To The Limit – deSymfonyDay, Barcelona 2014
Ronny López
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
Fabien Potencier
 
Dependency injection with Symfony 2
Dependency injection with Symfony 2
cammanderson
 
Creating your own framework on top of Symfony2 Components
Creating your own framework on top of Symfony2 Components
Deepak Chandani
 
Symfony 2 (PHP Quebec 2009)
Symfony 2 (PHP Quebec 2009)
Fabien Potencier
 
Symfony2 San Francisco Meetup 2009
Symfony2 San Francisco Meetup 2009
Fabien Potencier
 
Nanos gigantium humeris insidentes (design patterns inside symfony 2)
Nanos gigantium humeris insidentes (design patterns inside symfony 2)
Giorgio Cefaro
 
Symfony2 from the Trenches
Symfony2 from the Trenches
Jonathan Wage
 
Dependency Injection in Drupal 8
Dependency Injection in Drupal 8
katbailey
 
Symfony2 - from the trenches
Symfony2 - from the trenches
Lukas Smith
 
Design patterns illustrated 010PHP
Design patterns illustrated 010PHP
Herman Peeren
 
Dependency injection Drupal Camp Wrocław 2014
Dependency injection Drupal Camp Wrocław 2014
Greg Szczotka
 
Symfony Components 2.0 on PHP 5.3
Symfony Components 2.0 on PHP 5.3
Fabien Potencier
 
Learning Symfony2 by practice
Learning Symfony2 by practice
Vytautas Beliunas
 
Design patterns illustrated-2015-03
Design patterns illustrated-2015-03
Herman Peeren
 
Symfony 4 Workshop - Limenius
Symfony 4 Workshop - Limenius
Ignacio Martín
 
Symfony metabook 2.0
Symfony metabook 2.0
Rengga Aditya
 
Learning Php Design Patterns William Sanders
Learning Php Design Patterns William Sanders
arzunakuuse94
 
DIC To The Limit – deSymfonyDay, Barcelona 2014
DIC To The Limit – deSymfonyDay, Barcelona 2014
Ronny López
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
Fabien Potencier
 
Dependency injection with Symfony 2
Dependency injection with Symfony 2
cammanderson
 
Creating your own framework on top of Symfony2 Components
Creating your own framework on top of Symfony2 Components
Deepak Chandani
 
Symfony 2 (PHP Quebec 2009)
Symfony 2 (PHP Quebec 2009)
Fabien Potencier
 
Symfony2 San Francisco Meetup 2009
Symfony2 San Francisco Meetup 2009
Fabien Potencier
 
Ad

More from Giulio De Donato (13)

Docker italia fatti un container tutto tuo
Docker italia fatti un container tutto tuo
Giulio De Donato
 
Lets isolate a process with no container like docker
Lets isolate a process with no container like docker
Giulio De Donato
 
More developers on DevOps with Docker orchestration
More developers on DevOps with Docker orchestration
Giulio De Donato
 
really really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfaces
Giulio De Donato
 
Import golang; struct microservice
Import golang; struct microservice
Giulio De Donato
 
Json web token api authorization
Json web token api authorization
Giulio De Donato
 
Think horizontally ood, ddd and bdd
Think horizontally ood, ddd and bdd
Giulio De Donato
 
I came i saw i go - golang it meetup codemotion rome 2014
I came i saw i go - golang it meetup codemotion rome 2014
Giulio De Donato
 
Benchmark Profile and Boost your Symfony application
Benchmark Profile and Boost your Symfony application
Giulio De Donato
 
Leaphly fight monolothic today
Leaphly fight monolothic today
Giulio De Donato
 
It's all about behaviour, also in php - phpspec
It's all about behaviour, also in php - phpspec
Giulio De Donato
 
Caching and data analysis will move your Symfony2 application to the next level
Caching and data analysis will move your Symfony2 application to the next level
Giulio De Donato
 
Rationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoring
Giulio De Donato
 
Docker italia fatti un container tutto tuo
Docker italia fatti un container tutto tuo
Giulio De Donato
 
Lets isolate a process with no container like docker
Lets isolate a process with no container like docker
Giulio De Donato
 
More developers on DevOps with Docker orchestration
More developers on DevOps with Docker orchestration
Giulio De Donato
 
really really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfaces
Giulio De Donato
 
Import golang; struct microservice
Import golang; struct microservice
Giulio De Donato
 
Json web token api authorization
Json web token api authorization
Giulio De Donato
 
Think horizontally ood, ddd and bdd
Think horizontally ood, ddd and bdd
Giulio De Donato
 
I came i saw i go - golang it meetup codemotion rome 2014
I came i saw i go - golang it meetup codemotion rome 2014
Giulio De Donato
 
Benchmark Profile and Boost your Symfony application
Benchmark Profile and Boost your Symfony application
Giulio De Donato
 
Leaphly fight monolothic today
Leaphly fight monolothic today
Giulio De Donato
 
It's all about behaviour, also in php - phpspec
It's all about behaviour, also in php - phpspec
Giulio De Donato
 
Caching and data analysis will move your Symfony2 application to the next level
Caching and data analysis will move your Symfony2 application to the next level
Giulio De Donato
 
Rationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoring
Giulio De Donato
 
Ad

Recently uploaded (20)

Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
ScyllaDB
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
 
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
The Growing Value and Application of FME & GenAI
The Growing Value and Application of FME & GenAI
Safe Software
 
Quantum AI: Where Impossible Becomes Probable
Quantum AI: Where Impossible Becomes Probable
Saikat Basu
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
Daily Lesson Log MATATAG ICT TEchnology 8
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
All Things Open
 
UserCon Belgium: Honey, VMware increased my bill
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
Safe Software
 
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
Fwdays
 
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Priyanka Aash
 
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
 
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
ScyllaDB
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
 
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
The Growing Value and Application of FME & GenAI
The Growing Value and Application of FME & GenAI
Safe Software
 
Quantum AI: Where Impossible Becomes Probable
Quantum AI: Where Impossible Becomes Probable
Saikat Basu
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
Daily Lesson Log MATATAG ICT TEchnology 8
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
All Things Open
 
UserCon Belgium: Honey, VMware increased my bill
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
Safe Software
 
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
Fwdays
 
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Priyanka Aash
 
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
 

Design pattern in Symfony2 - Nanos gigantium humeris insidentes