SlideShare a Scribd company logo
1 of 90
Download to read offline
Symfony:
Your Next Microframework
by your friend:
Ryan Weaver
@weaverryan
by your friend:
Ryan Weaver
@weaverryan
KnpUniversity.com

github.com/weaverryan
Who is this guy?
> Lead for the Symfony documentationā€Ø
> KnpLabs US - Symfony Consulting, 

training & general Kumbaya

> Writer for KnpUniversity.com Tutorials
> Husband of the much more 

talented @leannapelham
Thinking about 2
Problems
@weaverryan
Problem 1:

Symfony Sucks
@weaverryan
@weaverryan
@weaverryan
@weaverryan
@weaverryan
Symfony

is too hard
@weaverryan
The Symfony Framework

is too hard
@weaverryan
The components are not usually the
problem
Why?
@weaverryan
Route

Controller

Response
@weaverryan
WTF?
Useful Objects
1) Common tasks requireā€Ø
too much code
@weaverryan
2) Symfony is too big
@weaverryan
Too many ļ¬les

==

A Perceived Complexity
@weaverryan
@weaverryan
~ 25 ļ¬les
~ 10 directories
for Hello World
Problem 2:

Is my project 

macro or micro?
@weaverryan
Macro => Use Symfony
@weaverryan
Micro => Use Silex
@weaverryan
The fact we have this
option is incredible

butā€¦
@weaverryan
Silex has a slightly
diļ¬€erent tech stack
@weaverryan
Silex doesnā€™t have bundles
@weaverryan
Silex canā€™t evolve to a full
stack Symfony App
@weaverryan
What if we just made
Symfony smaller?
@weaverryan
6 ļ¬les
62 lines of code
<?phpā€Ø
ā€Ø
use SymfonyComponentHttpKernelKernel;ā€Ø
use SymfonyComponentConfigLoaderLoaderInterface;ā€Ø
ā€Ø
class AppKernel extends Kernelā€Ø
{ā€Ø
public function registerBundles()ā€Ø
{ā€Ø
return array(ā€Ø
new SymfonyBundleFrameworkBundleFrameworkBundle(),ā€Ø
new SymfonyBundleTwigBundleTwigBundle(),ā€Ø
);ā€Ø
}ā€Ø
ā€Ø
public function registerContainerConfiguration($loader)ā€Ø
{ā€Ø
$loader->load(ā€Ø
__DIR__.'/config/config_'.$this->getEnvironment().'.yml'ā€Ø
);ā€Ø
}ā€Ø
}
How small can we go?
@weaverryan
What is a Symfony
Application?
@weaverryan
What is a Symfony App?
@weaverryan
1.A set of bundles
2.A container of services
3.Routes
Letā€™s create a new

Symfony project

from nothing
@weaverryan
{ā€Ø
"require": {ā€Ø
"symfony/symfony": "^2.8"ā€Ø
}ā€Ø
}
@weaverryan
composer.json
<?phpā€Ø
ā€Ø
use SymfonyComponentConfigLoaderLoaderInterface;ā€Ø
use SymfonyComponentHttpKernelKernel;ā€Ø
ā€Ø
require __DIR__.'/vendor/autoload.php';ā€Ø
ā€Ø
class AppKernel extends Kernelā€Ø
{ā€Ø
public function registerBundles()ā€Ø
{ā€Ø
}ā€Ø
ā€Ø
public function registerContainerConfiguration($loader)ā€Ø
{ā€Ø
}ā€Ø
}ā€Ø
index.php
<?phpā€Ø
ā€Ø
use SymfonyBundleFrameworkBundleKernelMicroKernelTrait;ā€Ø
use SymfonyComponentDependencyInjectionContainerBuilder;ā€Ø
use SymfonyComponentRoutingRouteCollectionBuilder;
// ...ā€Ø
ā€Ø
class AppKernel extends Kernelā€Ø
{ā€Ø
use MicroKernelTrait;ā€Ø
ā€Ø
public function registerBundles()ā€Ø
{ā€Ø
}ā€Ø
ā€Ø
protected function configureRoutes(RouteCollectionBuilder $routes)ā€Ø
{ā€Ø
}ā€Ø
ā€Ø
protected function configureContainer(ContainerBuilder $c, $loader)ā€Ø
{ā€Ø
}ā€Ø
}ā€Ø
index.php
1) A set of bundles
2) Routes
3) A container of services
public function registerBundles()ā€Ø
{ā€Ø
return array(ā€Ø
new SymfonyBundleFrameworkBundleFrameworkBundle()ā€Ø
);ā€Ø
}
AppKernel
protected function configureContainer(ContainerBuilder $c, $loader)ā€Ø
{ā€Ø
$c->loadFromExtension('framework', array(ā€Ø
'secret' => 'S0ME_SECRET',ā€Ø
));ā€Ø
}
AppKernel
// config.yml
framework:ā€Ø
secret: S0ME_SECRET
protected function configureRoutes(RouteCollectionBuilder $routes)ā€Ø
{ā€Ø
$routes->add('/random/{limit}', 'kernel:randomAction');ā€Ø
}
AppKernel
New in 2.8!
service:methodName
(Symfonyā€™s controller as a service syntax)
public function randomAction($limit)ā€Ø
{ā€Ø
return new JsonResponse(array(ā€Ø
'number' => rand(0, $limit)ā€Ø
));ā€Ø
}
AppKernel
<?phpā€Ø
ā€Ø
// ...ā€Ø
ā€Ø
require __DIR__.'/vendor/autoload.php';ā€Ø
ā€Ø
ā€Ø
class AppKernel extends Kernelā€Ø
{ā€Ø
// ...ā€Ø
}ā€Ø
ā€Ø
$kernel = new AppKernel('dev', true);ā€Ø
$request = Request::createFromGlobals();ā€Ø
$response = $kernel->handle($request);ā€Ø
$response->send();ā€Ø
$kernel->terminate($request, $response);ā€Ø
index.php
How many ļ¬les?
@weaverryan
How many lines of code?
2 ļ¬les
52 lines of code
This is a full stack
framework
@weaverryan
@weaverryan
1. Service Container
2. Routing
3. Events
4. ESI & Sub-Requests
5. Compatible with 3rd party bundles
Fast as Hell
@weaverryan
The goal is not to create
single-ļ¬le apps
@weaverryan
Clarity & Control
@weaverryan
Building a
Realistic App
@weaverryan
github.com/weaverryan/docs-micro_kernel
Requirements:
@weaverryan
1. Add some organization
2. Load annotation routes
3. Web Debug Toolbar + Proļ¬ler
4. Twig
Reorganize
class AppKernel extends Kernelā€Ø
{ā€Ø
}ā€Ø
// web/index.phpā€Ø
$kernel = new AppKernel('dev', true);ā€Ø
$request = Request::createFromGlobals();ā€Ø
$response = $kernel->handle($request);ā€Ø
$response->send();
public function registerBundles()ā€Ø
{ā€Ø
$bundles = array(ā€Ø
new FrameworkBundle(),ā€Ø
new TwigBundle(),ā€Ø
new SensioFrameworkExtraBundle()ā€Ø
);ā€Ø
ā€Ø
if ($this->getEnvironment() == 'dev') {ā€Ø
$bundles[] = new WebProfilerBundle();ā€Ø
}ā€Ø
ā€Ø
return $bundles;ā€Ø
}
app/AppKernel.php
protected function configureContainer(ContainerBuilder $c, $loader)ā€Ø
{ā€Ø
$loader->load(__DIR__.'/config/config.yml');ā€Ø
ā€Ø
if (isset($this->bundles['WebProfilerBundle'])) {ā€Ø
$c->loadFromExtension('web_profiler', array(ā€Ø
'toolbar' => true,ā€Ø
'intercept_redirects' => false,ā€Ø
));ā€Ø
}ā€Ø
}
app/AppKernel.php
@weaverryan
app/conļ¬g/conļ¬g.yml
framework:ā€Ø
secret: S0ME_SECRETā€Ø
templating:ā€Ø
engines: ['twig']ā€Ø
profiler: { only_exceptions: false }
@weaverryan
protected function configureContainer(ContainerBuilder $c, $loader)ā€Ø
{ā€Ø
$loader->load(__DIR__.'/config/config.yml');ā€Ø
ā€Ø
if (isset($this->bundles['WebProfilerBundle'])) {ā€Ø
$c->loadFromExtension('web_profiler', array(ā€Ø
'toolbar' => true,ā€Ø
'intercept_redirects' => false,ā€Ø
));ā€Ø
}ā€Ø
}
app/AppKernel.php
@weaverryan
Goodbye conļ¬g_dev.yml
protected function configureRoutes(RouteCollectionBuilder $routes)ā€Ø
{ā€Ø
if (isset($this->bundles['WebProfilerBundle'])) {ā€Ø
$routes->import(ā€Ø
'@WebProfilerBundle/Resources/config/routing/wdt.xml',ā€Ø
'_wdt'ā€Ø
);ā€Ø
$routes->import(ā€Ø
'@WebProfilerBundle/Resources/config/routing/profiler.xml',ā€Ø
'/_profiler'ā€Ø
);ā€Ø
}ā€Ø
ā€Ø
$routes->import(__DIR__.'/../src/App/Controller/', '/', 'annotation')ā€Ø
}
app/AppKernel.php
Goodbye routing_dev.yml
Clarity & Control
@weaverryan
@weaverryan
protected function configureContainer(ContainerBuilder $c, $loader)ā€Ø
{ā€Ø
$loader->load(__DIR__ . '/config/config.yml');ā€Ø
ā€Ø
$c->setParameter('secret', getenv('SECRET'));ā€Ø
$c->loadFromExtension('doctrine', [ā€Ø
'dbal' => [ā€Ø
'driver' => 'pdo_mysql',ā€Ø
'host' => getenv('DATABASE_HOST'),ā€Ø
'user' => getenv('DATABASE_USER'),ā€Ø
'password' => getenv('DATABASE_PASS'),ā€Ø
]ā€Ø
]);ā€Ø
// ...ā€Ø
}
Environment Variables
@weaverryan
protected function configureContainer(ContainerBuilder $c, $loader)ā€Ø
{ā€Ø
$loader->load(__DIR__.'/config/config.yml');ā€Ø
ā€Ø
if (in_array($this->getEnvironment(), ['dev', 'test'])) {ā€Ø
ā€Ø
$c->loadFromExtension('framework', [ā€Ø
'profiler' => ['only_exceptions' => false]ā€Ø
]);ā€Ø
ā€Ø
}ā€Ø
ā€Ø
// ...ā€Ø
}
Environment Control
@weaverryan
Build Services
protected function configureContainer(ContainerBuilder $c, $loader)ā€Ø
{ā€Ø
// ...ā€Ø
ā€Ø
$c->register('santa.controller', SantaController::class)ā€Ø
->setAutowired(true);ā€Ø
ā€Ø
}
@weaverryan
Build Routes
protected function configureRoutes(RouteCollectionBuilder $routes)ā€Ø
{ā€Ø
// ...ā€Ø
$routes->add('/santa', 'AppBundle:Santa:northPole');ā€Ø
ā€Ø
$routes->add(ā€˜/naughty-list/{page}ā€™, 'AppBundle:Santa:list')ā€Ø
->setRequirement('list', 'd+')ā€Ø
->setDefault('page', 1);ā€Ø
}
@weaverryan
Bundless
Applications?
@weaverryan
Wait, what does a
bundle even give me?
A bundle gives you:
@weaverryan
1. Services
2. A resource root (e.g. path to load templates)
3. Magic functionality (e.g. commands)
4. Shortcuts
(_controller, AppBundle:User)
@weaverryan
1) Services
protected function configureContainer(ContainerBuilder $c, $loader)ā€Ø
{ā€Ø
// ...ā€Ø
ā€Ø
$c->register('santa.controller', SantaController::class)ā€Ø
->setAutowired(true);ā€Ø
ā€Ø
}
@weaverryan
2) Resource Root
2) Resource Root
protected function configureContainer(ContainerBuilder $c, $loader)ā€Ø
{ā€Ø
// ...ā€Ø
ā€Ø
$c->loadFromExtension('twig', [ā€Ø
'paths' => [__DIR__.'/Resources/views' => 'north_pole']ā€Ø
]);ā€Ø
}
public function randomAction($limit)ā€Ø
{ā€Ø
$number = rand(0, $limit);ā€Ø
ā€Ø
return $this->render(ā€˜@north_pole/micro/random.html.twigā€™, [ā€Ø
'number' => $numberā€Ø
]);ā€Ø
}
@weaverryan
3) Magic Functionality
1. Register commands as services
2. Conļ¬gure Doctrine mappings to load your
Entity directory
@weaverryan
4) Shortcuts
santa:ā€Ø
controller: AppBundle:Santa:xmasā€Ø
controller: AppBundleControllerSantaController::xmasAction
$em->getRepository('AppBundle:App');ā€Ø
$em->getRepository('AppBundleEntityApp');
@weaverryan
One New Trick
protected function configureRoutes(RouteCollectionBuilder $routes)ā€Ø
{ā€Ø
$routes->import(__DIR__.ā€™@AppBundle/Controller/ā€˜, '/', 'annotation')ā€Ø
}
protected function configureRoutes(RouteCollectionBuilder $routes)ā€Ø
{ā€Ø
$routes->import(__DIR__.'/../src/App/Controller/', '/', 'annotation')ā€Ø
}
Multiple Kernels?
@weaverryan
Multiple kernels, why?
@weaverryan
1. micro service architecture in monolithic
repository
2. performance (less routes, services &
listeners)
Multiple kernels was
always possible
@weaverryan
Now theyā€™re obvious
@weaverryan
// app/ApiKernel.php
class ApiKernel extends Kernelā€Ø
{ā€Ø
use MicroKernelTrait;ā€Ø
ā€Ø
public function registerBundles()ā€Ø
{ā€Ø
$bundles = array(ā€Ø
new FrameworkBundle(),ā€Ø
new SensioFrameworkExtraBundle()ā€Ø
);ā€Ø
ā€Ø
return $bundles;ā€Ø
}ā€Ø
}
No TwigBundle
class ApiKernel extends Kernelā€Ø
{ā€Ø
// ...ā€Ø
ā€Ø
protected function configureContainer($c, $loader)ā€Ø
{ā€Ø
$loader->load(__DIR__.'/config/config.yml');ā€Ø
$loader->load(__DIR__.'/config/api.yml');ā€Ø
}ā€Ø
}
Use PHP logic to load share
conļ¬g, and custom conļ¬g
class ApiKernel extends Kernelā€Ø
{ā€Ø
// ...ā€Ø
ā€Ø
protected function configureRoutes($routes)ā€Ø
{ā€Ø
$routes->import(ā€Ø
__DIR__.'/../src/Api/Controller/',ā€Ø
'/api',ā€Ø
'annotation'ā€Ø
);ā€Ø
}ā€Ø
ā€Ø
public function getCacheDir()ā€Ø
{ā€Ø
return __DIR__.ā€™/../var/cache/api/'
.$this->getEnvironment();ā€Ø
}ā€Ø
}
Load diļ¬€erent routes
cacheDir ~= the cache key
Boot the correct kernel
however you want
@weaverryan
// web/index.php
use SymfonyComponentHttpFoundationRequest;ā€Ø
ā€Ø
require __DIR__.'/../app/autoload.php';ā€Ø
ā€Ø
$request = Request::createFromGlobals();ā€Ø
ā€Ø
if (strpos($request->getPathInfo(), '/api') === 0) {ā€Ø
require __DIR__.'/../app/ApiKernel.php';ā€Ø
$kernel = new ApiKernel('dev', true);ā€Ø
} else {ā€Ø
require __DIR__.'/../app/WebKernel.php';ā€Ø
$kernel = new WebKernel('dev', true);ā€Ø
}ā€Ø
ā€Ø
$response = $kernel->handle($request);ā€Ø
$response->send();ā€Ø
But how does it work?
@weaverryan
There is one person

who *hates* the name

MicroKernelTrait
@weaverryan
@weaverryan
@weaverryan
trait MicroKernelTraitā€Ø
{ā€Ø
abstract protected function configureRoutes(RouteCollectionBuilder $routes);ā€Ø
abstract protected function configureContainer(ContainerBuilder $c, $loader);ā€Ø
ā€Ø
public function registerContainerConfiguration($loader)ā€Ø
{ā€Ø
$loader->load(function ($container) use ($loader) {ā€Ø
$container->loadFromExtension('framework', array(ā€Ø
'router' => array(ā€Ø
'resource' => 'kernel:loadRoutes',ā€Ø
'type' => 'service',ā€Ø
),ā€Ø
));ā€Ø
ā€Ø
$this->configureContainer($container, $loader);ā€Ø
});ā€Ø
}ā€Ø
ā€Ø
public function loadRoutes(LoaderInterface $loader)ā€Ø
{ā€Ø
$routes = new RouteCollectionBuilder($loader);ā€Ø
$this->configureRoutes($routes);ā€Ø
ā€Ø
return $routes->build();ā€Ø
}ā€Ø
}
Closure Loader
New service route loader
So what now?
@weaverryan
I have a big projectā€¦
@weaverryan
Use it for clarity
Iā€™m teaching
@weaverryan
Show it for simplicity
I have a small app
@weaverryan
Show it for power
@weaverryan
PHP & Symfony Video Tutorials
KnpUniversity.com
Thank You!

More Related Content

What's hot

New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)Javier Eguiluz
Ā 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsPhpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsMichael Peacock
Ā 
Twig: Friendly Curly Braces Invade Your Templates!
Twig: Friendly Curly Braces Invade Your Templates!Twig: Friendly Curly Braces Invade Your Templates!
Twig: Friendly Curly Braces Invade Your Templates!Ryan Weaver
Ā 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony AppsKris Wallsmith
Ā 
Building Cloud Castles - LRUG
Building Cloud Castles - LRUGBuilding Cloud Castles - LRUG
Building Cloud Castles - LRUGBen Scofield
Ā 
Great Developers Steal
Great Developers StealGreat Developers Steal
Great Developers StealBen Scofield
Ā 
Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012Michael Peacock
Ā 
A Gentle Introduction to Event Loops
A Gentle Introduction to Event LoopsA Gentle Introduction to Event Loops
A Gentle Introduction to Event Loopsdeepfountainconsulting
Ā 
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other ToolsCool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other ToolsRyan Weaver
Ā 
Dance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech TalkDance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech TalkMichael Peacock
Ā 
Microservice Teststrategie mit Symfony2
Microservice Teststrategie mit Symfony2Microservice Teststrategie mit Symfony2
Microservice Teststrategie mit Symfony2Per Bernhardt
Ā 
The road to Ember.js 2.0
The road to Ember.js 2.0The road to Ember.js 2.0
The road to Ember.js 2.0Codemotion
Ā 
Effective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 DevelopersEffective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 DevelopersMarcin Chwedziak
Ā 
Web Crawling with NodeJS
Web Crawling with NodeJSWeb Crawling with NodeJS
Web Crawling with NodeJSSylvain Zimmer
Ā 
Controlling The Cloud With Python
Controlling The Cloud With PythonControlling The Cloud With Python
Controlling The Cloud With PythonLuca Mearelli
Ā 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the FinishYehuda Katz
Ā 
How to develop modern web application framework
How to develop modern web application frameworkHow to develop modern web application framework
How to develop modern web application frameworktechmemo
Ā 

What's hot (20)

New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
Ā 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsPhpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friends
Ā 
Twig: Friendly Curly Braces Invade Your Templates!
Twig: Friendly Curly Braces Invade Your Templates!Twig: Friendly Curly Braces Invade Your Templates!
Twig: Friendly Curly Braces Invade Your Templates!
Ā 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
Ā 
Building Cloud Castles - LRUG
Building Cloud Castles - LRUGBuilding Cloud Castles - LRUG
Building Cloud Castles - LRUG
Ā 
Great Developers Steal
Great Developers StealGreat Developers Steal
Great Developers Steal
Ā 
Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012
Ā 
Symfony 2
Symfony 2Symfony 2
Symfony 2
Ā 
A Gentle Introduction to Event Loops
A Gentle Introduction to Event LoopsA Gentle Introduction to Event Loops
A Gentle Introduction to Event Loops
Ā 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricks
Ā 
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other ToolsCool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Ā 
Dance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech TalkDance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech Talk
Ā 
Microservice Teststrategie mit Symfony2
Microservice Teststrategie mit Symfony2Microservice Teststrategie mit Symfony2
Microservice Teststrategie mit Symfony2
Ā 
The road to Ember.js 2.0
The road to Ember.js 2.0The road to Ember.js 2.0
The road to Ember.js 2.0
Ā 
Effective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 DevelopersEffective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 Developers
Ā 
Web Crawling with NodeJS
Web Crawling with NodeJSWeb Crawling with NodeJS
Web Crawling with NodeJS
Ā 
Controlling The Cloud With Python
Controlling The Cloud With PythonControlling The Cloud With Python
Controlling The Cloud With Python
Ā 
Phinx talk
Phinx talkPhinx talk
Phinx talk
Ā 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the Finish
Ā 
How to develop modern web application framework
How to develop modern web application frameworkHow to develop modern web application framework
How to develop modern web application framework
Ā 

Viewers also liked

Composer in monolithic repositories
Composer in monolithic repositoriesComposer in monolithic repositories
Composer in monolithic repositoriesSten Hiedel
Ā 
Command Bus To Awesome Town
Command Bus To Awesome TownCommand Bus To Awesome Town
Command Bus To Awesome TownRoss Tuck
Ā 
Hexagonal architecture message-oriented software design
Hexagonal architecture   message-oriented software designHexagonal architecture   message-oriented software design
Hexagonal architecture message-oriented software designMatthias Noback
Ā 
Models and Service Layers, Hemoglobin and Hobgoblins
Models and Service Layers, Hemoglobin and HobgoblinsModels and Service Layers, Hemoglobin and Hobgoblins
Models and Service Layers, Hemoglobin and HobgoblinsRoss Tuck
Ā 
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014Matthias Noback
Ā 
Diving deep into twig
Diving deep into twigDiving deep into twig
Diving deep into twigMatthias Noback
Ā 
Get Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP StreamsGet Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP StreamsDavey Shafik
Ā 
Elastic Searching With PHP
Elastic Searching With PHPElastic Searching With PHP
Elastic Searching With PHPLea HƤnsenberger
Ā 
Techniques d'accƩlƩration des pages web
Techniques d'accƩlƩration des pages webTechniques d'accƩlƩration des pages web
Techniques d'accƩlƩration des pages webJean-Pierre Vincent
Ā 
Automation using-phing
Automation using-phingAutomation using-phing
Automation using-phingRajat Pandit
Ā 
PHP5.5 is Here
PHP5.5 is HerePHP5.5 is Here
PHP5.5 is Herejulien pauli
Ā 
Electrify your code with PHP Generators
Electrify your code with PHP GeneratorsElectrify your code with PHP Generators
Electrify your code with PHP GeneratorsMark Baker
Ā 
The quest for global design principles (SymfonyLive Berlin 2015)
The quest for global design principles (SymfonyLive Berlin 2015)The quest for global design principles (SymfonyLive Berlin 2015)
The quest for global design principles (SymfonyLive Berlin 2015)Matthias Noback
Ā 
WordCamp Cantabria - CoĢdigo mantenible con WordPress
WordCamp Cantabria  - CoĢdigo mantenible con WordPressWordCamp Cantabria  - CoĢdigo mantenible con WordPress
WordCamp Cantabria - CoĢdigo mantenible con WordPressAsier MarquĆ©s
Ā 
Top tips my_sql_performance
Top tips my_sql_performanceTop tips my_sql_performance
Top tips my_sql_performanceafup Paris
Ā 
Mocking Demystified
Mocking DemystifiedMocking Demystified
Mocking DemystifiedMarcello Duarte
Ā 
Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Marcello Duarte
Ā 
Why elasticsearch rocks!
Why elasticsearch rocks!Why elasticsearch rocks!
Why elasticsearch rocks!tlrx
Ā 
Writing infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQLWriting infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQLGabriele Bartolini
Ā 

Viewers also liked (20)

Composer in monolithic repositories
Composer in monolithic repositoriesComposer in monolithic repositories
Composer in monolithic repositories
Ā 
Command Bus To Awesome Town
Command Bus To Awesome TownCommand Bus To Awesome Town
Command Bus To Awesome Town
Ā 
Hexagonal architecture message-oriented software design
Hexagonal architecture   message-oriented software designHexagonal architecture   message-oriented software design
Hexagonal architecture message-oriented software design
Ā 
Models and Service Layers, Hemoglobin and Hobgoblins
Models and Service Layers, Hemoglobin and HobgoblinsModels and Service Layers, Hemoglobin and Hobgoblins
Models and Service Layers, Hemoglobin and Hobgoblins
Ā 
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
Ā 
Diving deep into twig
Diving deep into twigDiving deep into twig
Diving deep into twig
Ā 
Get Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP StreamsGet Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP Streams
Ā 
Elastic Searching With PHP
Elastic Searching With PHPElastic Searching With PHP
Elastic Searching With PHP
Ā 
Techniques d'accƩlƩration des pages web
Techniques d'accƩlƩration des pages webTechniques d'accƩlƩration des pages web
Techniques d'accƩlƩration des pages web
Ā 
Automation using-phing
Automation using-phingAutomation using-phing
Automation using-phing
Ā 
PHP5.5 is Here
PHP5.5 is HerePHP5.5 is Here
PHP5.5 is Here
Ā 
Electrify your code with PHP Generators
Electrify your code with PHP GeneratorsElectrify your code with PHP Generators
Electrify your code with PHP Generators
Ā 
The quest for global design principles (SymfonyLive Berlin 2015)
The quest for global design principles (SymfonyLive Berlin 2015)The quest for global design principles (SymfonyLive Berlin 2015)
The quest for global design principles (SymfonyLive Berlin 2015)
Ā 
Doctrine2 sf2Vigo
Doctrine2 sf2VigoDoctrine2 sf2Vigo
Doctrine2 sf2Vigo
Ā 
WordCamp Cantabria - CoĢdigo mantenible con WordPress
WordCamp Cantabria  - CoĢdigo mantenible con WordPressWordCamp Cantabria  - CoĢdigo mantenible con WordPress
WordCamp Cantabria - CoĢdigo mantenible con WordPress
Ā 
Top tips my_sql_performance
Top tips my_sql_performanceTop tips my_sql_performance
Top tips my_sql_performance
Ā 
Mocking Demystified
Mocking DemystifiedMocking Demystified
Mocking Demystified
Ā 
Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015
Ā 
Why elasticsearch rocks!
Why elasticsearch rocks!Why elasticsearch rocks!
Why elasticsearch rocks!
Ā 
Writing infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQLWriting infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQL
Ā 

Similar to Symfony: Your Next Microframework (SymfonyCon 2015)

What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012D
Ā 
Symfony Under the Hood
Symfony Under the HoodSymfony Under the Hood
Symfony Under the HoodeZ Systems
Ā 
Symfony internals [english]
Symfony internals [english]Symfony internals [english]
Symfony internals [english]Raul Fraile
Ā 
Osiąganie mądrej architektury z Symfony2
Osiąganie mądrej architektury z Symfony2 Osiąganie mądrej architektury z Symfony2
Osiąganie mądrej architektury z Symfony2 3camp
Ā 
Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Fabien Potencier
Ā 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony AppsKris Wallsmith
Ā 
Symfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il clienteSymfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il clienteLeonardo Proietti
Ā 
Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12Jakub Zalas
Ā 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For BeginnersJonathan Wage
Ā 
Harmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and PuppetHarmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and PuppetAchieve Internet
Ā 
Lithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate FrameworksLithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate FrameworksNate Abele
Ā 
What's New In Laravel 5
What's New In Laravel 5What's New In Laravel 5
What's New In Laravel 5Darren Craig
Ā 
Datagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and BackgridDatagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and BackgridGiorgio Cefaro
Ā 
Datagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and BackgridDatagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and Backgrideugenio pombi
Ā 
Building Cloud Castles
Building Cloud CastlesBuilding Cloud Castles
Building Cloud CastlesBen Scofield
Ā 
Symfony War Stories
Symfony War StoriesSymfony War Stories
Symfony War StoriesJakub Zalas
Ā 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasminePaulo Ragonha
Ā 
How kris-writes-symfony-apps-london
How kris-writes-symfony-apps-londonHow kris-writes-symfony-apps-london
How kris-writes-symfony-apps-londonKris Wallsmith
Ā 
Decoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICDecoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICKonstantin Kudryashov
Ā 

Similar to Symfony: Your Next Microframework (SymfonyCon 2015) (20)

What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012
Ā 
Symfony Under the Hood
Symfony Under the HoodSymfony Under the Hood
Symfony Under the Hood
Ā 
Symfony internals [english]
Symfony internals [english]Symfony internals [english]
Symfony internals [english]
Ā 
Osiąganie mądrej architektury z Symfony2
Osiąganie mądrej architektury z Symfony2 Osiąganie mądrej architektury z Symfony2
Osiąganie mądrej architektury z Symfony2
Ā 
Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)
Ā 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
Ā 
Symfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il clienteSymfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il cliente
Ā 
Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12
Ā 
Symfony2 revealed
Symfony2 revealedSymfony2 revealed
Symfony2 revealed
Ā 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For Beginners
Ā 
Harmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and PuppetHarmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and Puppet
Ā 
Lithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate FrameworksLithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate Frameworks
Ā 
What's New In Laravel 5
What's New In Laravel 5What's New In Laravel 5
What's New In Laravel 5
Ā 
Datagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and BackgridDatagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and Backgrid
Ā 
Datagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and BackgridDatagrids with Symfony 2, Backbone and Backgrid
Datagrids with Symfony 2, Backbone and Backgrid
Ā 
Building Cloud Castles
Building Cloud CastlesBuilding Cloud Castles
Building Cloud Castles
Ā 
Symfony War Stories
Symfony War StoriesSymfony War Stories
Symfony War Stories
Ā 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Ā 
How kris-writes-symfony-apps-london
How kris-writes-symfony-apps-londonHow kris-writes-symfony-apps-london
How kris-writes-symfony-apps-london
Ā 
Decoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DICDecoupling with Design Patterns and Symfony2 DIC
Decoupling with Design Patterns and Symfony2 DIC
Ā 

More from Ryan Weaver

Webpack Encore Symfony Live 2017 San Francisco
Webpack Encore Symfony Live 2017 San FranciscoWebpack Encore Symfony Live 2017 San Francisco
Webpack Encore Symfony Live 2017 San FranciscoRyan Weaver
Ā 
Grand Rapids PHP Meetup: Behavioral Driven Development with Behat
Grand Rapids PHP Meetup: Behavioral Driven Development with BehatGrand Rapids PHP Meetup: Behavioral Driven Development with Behat
Grand Rapids PHP Meetup: Behavioral Driven Development with BehatRyan Weaver
Ā 
Silex: Microframework y camino fƔcil de aprender Symfony
Silex: Microframework y camino fƔcil de aprender SymfonySilex: Microframework y camino fƔcil de aprender Symfony
Silex: Microframework y camino fƔcil de aprender SymfonyRyan Weaver
Ā 
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love itDrupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love itRyan Weaver
Ā 
The Wonderful World of Symfony Components
The Wonderful World of Symfony ComponentsThe Wonderful World of Symfony Components
The Wonderful World of Symfony ComponentsRyan Weaver
Ā 
A PHP Christmas Miracle - 3 Frameworks, 1 app
A PHP Christmas Miracle - 3 Frameworks, 1 appA PHP Christmas Miracle - 3 Frameworks, 1 app
A PHP Christmas Miracle - 3 Frameworks, 1 appRyan Weaver
Ā 
Symfony2: Get your project started
Symfony2: Get your project startedSymfony2: Get your project started
Symfony2: Get your project startedRyan Weaver
Ā 
Symony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP FrameworkSymony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP FrameworkRyan Weaver
Ā 
Hands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkHands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkRyan Weaver
Ā 
Being Dangerous with Twig (Symfony Live Paris)
Being Dangerous with Twig (Symfony Live Paris)Being Dangerous with Twig (Symfony Live Paris)
Being Dangerous with Twig (Symfony Live Paris)Ryan Weaver
Ā 
Being Dangerous with Twig
Being Dangerous with TwigBeing Dangerous with Twig
Being Dangerous with TwigRyan Weaver
Ā 
Doctrine2 In 10 Minutes
Doctrine2 In 10 MinutesDoctrine2 In 10 Minutes
Doctrine2 In 10 MinutesRyan Weaver
Ā 
Dependency Injection: Make your enemies fear you
Dependency Injection: Make your enemies fear youDependency Injection: Make your enemies fear you
Dependency Injection: Make your enemies fear youRyan Weaver
Ā 
The Art of Doctrine Migrations
The Art of Doctrine MigrationsThe Art of Doctrine Migrations
The Art of Doctrine MigrationsRyan Weaver
Ā 

More from Ryan Weaver (14)

Webpack Encore Symfony Live 2017 San Francisco
Webpack Encore Symfony Live 2017 San FranciscoWebpack Encore Symfony Live 2017 San Francisco
Webpack Encore Symfony Live 2017 San Francisco
Ā 
Grand Rapids PHP Meetup: Behavioral Driven Development with Behat
Grand Rapids PHP Meetup: Behavioral Driven Development with BehatGrand Rapids PHP Meetup: Behavioral Driven Development with Behat
Grand Rapids PHP Meetup: Behavioral Driven Development with Behat
Ā 
Silex: Microframework y camino fƔcil de aprender Symfony
Silex: Microframework y camino fƔcil de aprender SymfonySilex: Microframework y camino fƔcil de aprender Symfony
Silex: Microframework y camino fƔcil de aprender Symfony
Ā 
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love itDrupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
Ā 
The Wonderful World of Symfony Components
The Wonderful World of Symfony ComponentsThe Wonderful World of Symfony Components
The Wonderful World of Symfony Components
Ā 
A PHP Christmas Miracle - 3 Frameworks, 1 app
A PHP Christmas Miracle - 3 Frameworks, 1 appA PHP Christmas Miracle - 3 Frameworks, 1 app
A PHP Christmas Miracle - 3 Frameworks, 1 app
Ā 
Symfony2: Get your project started
Symfony2: Get your project startedSymfony2: Get your project started
Symfony2: Get your project started
Ā 
Symony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP FrameworkSymony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP Framework
Ā 
Hands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkHands-on with the Symfony2 Framework
Hands-on with the Symfony2 Framework
Ā 
Being Dangerous with Twig (Symfony Live Paris)
Being Dangerous with Twig (Symfony Live Paris)Being Dangerous with Twig (Symfony Live Paris)
Being Dangerous with Twig (Symfony Live Paris)
Ā 
Being Dangerous with Twig
Being Dangerous with TwigBeing Dangerous with Twig
Being Dangerous with Twig
Ā 
Doctrine2 In 10 Minutes
Doctrine2 In 10 MinutesDoctrine2 In 10 Minutes
Doctrine2 In 10 Minutes
Ā 
Dependency Injection: Make your enemies fear you
Dependency Injection: Make your enemies fear youDependency Injection: Make your enemies fear you
Dependency Injection: Make your enemies fear you
Ā 
The Art of Doctrine Migrations
The Art of Doctrine MigrationsThe Art of Doctrine Migrations
The Art of Doctrine Migrations
Ā 

Recently uploaded

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
Ā 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
Ā 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
Ā 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
Ā 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
Ā 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
Ā 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
Ā 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
Ā 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
Ā 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
Ā 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
Ā 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
Ā 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
Ā 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
Ā 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
Ā 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
Ā 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
Ā 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
Ā 

Recently uploaded (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Ā 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
Ā 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
Ā 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
Ā 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
Ā 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Ā 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Ā 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Ā 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Ā 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
Ā 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
Ā 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
Ā 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Ā 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Ā 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Ā 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Ā 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Ā 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Ā 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
Ā 

Symfony: Your Next Microframework (SymfonyCon 2015)