SlideShare uma empresa Scribd logo
1 de 142
Baixar para ler offline
ZF2 Modular Architecture
Taking Advantage of It
PHPDay – Verona, Italy – 18/05/2013
2
STEVE MARASPIN
3
http://friuli.grusp.org/
MODULES, WHAT?
Picture credits: http://www.flickr.com/photos/10459273@N05/4771563267
A Module is…
5
A collection of code and other
files that solves a more specific
atomic problem of the larger
business problem.
ZF2 RFC
A re-usable piece of
functionality that can be used
to construct a more complex
application.
6
Evan Coury - http://evan.pro/zf2-modules-talk.html
A Module is…
A re-usable piece of
functionality that can be used
to construct a more complex
application.
7
Evan Coury - http://evan.pro/zf2-modules-talk.html
A Module is…
8
• 15.Reuse-in-the-small is a
solved problem.
• 16.Reuse-in-the-large remains
a mostly unsolved problem.
9
Robert R. Glass – Facts and Fallacies of Software Engineering
About Software Reuse
What I remember about ZF1 Modules…
10
Model
Admin Panel
content management, store management, contact requests, ...
Web Site
contents, product catalogue, contact form, …
What could we reuse?
11
Model
Admin Panel
content management, store management, contact requests, ...
Web Site
contents, product catalogue, contact form, …
Picture credits: http://www.flickr.com/photos/cclark395/7671665642/
MEET THE NICE FOLKS
AT OUR COMPANY
INFORMATION DESK
TECHNICAL OFFICE
Picture credits: http://www.flickr.com/photos/ter-burg/5807937726/
WAREHOUSE
Picture credits: http://www.flickr.com/photos/forklifttrainingadelaide/6774324457/
ACCOUNT MANAGER
17
Our Company Hierarchy
TECHNICAL OFFICE
ACCOUNT MGR.
WAREHOUSE
TECHNICAL OFFICE
ACCOUNT MGR.
INFORMATION DESK
DEPARTMENT
ONE
DEPARTMENT
TWO
18
Customer arrives…
TECHNICAL OFFICE
ACCOUNT MGR.
WAREHOUSE
TECHNICAL OFFICE
ACCOUNT MGR.
19
Information desk greets her
TECHNICAL OFFICE
ACCOUNT MGR.
WAREHOUSE
TECHNICAL OFFICE
ACCOUNT MGR.
20
…gives her directions…
WAREHOUSE
TECHNICAL OFFICE
ACCOUNT MGR.
TECHNICAL OFFICE
ACCOUNT MGR.
21
Warehouse folks do things
TECHNICAL OFFICE
ACCOUNT MGR.
TECHNICAL OFFICE
WAREHOUSE
ACCOUNT MGR.
22
Stuff is ready for delivery
TECHNICAL OFFICE
ACCOUNT MGR.
WAREHOUSE
TECHNICAL OFFICE
ACCOUNT MGR.
23
Customer is happy.
TECHNICAL OFFICE
ACCOUNT MGR.
WAREHOUSE
TECHNICAL OFFICE
ACCOUNT MGR.
24
Customer is happy. Eventually.
TECHNICAL OFFICE
ACCOUNT MGR.
WAREHOUSE
TECHNICAL OFFICE
ACCOUNT MGR.
25
But Hey…
This is MVC!
26
But Hey…
27
http://framework.zend.com/
28
Our Application
CONTROLLER
VIEW
MODEL
CONTROLLER
VIEW
29
Back to our company…
TECHNICAL OFFICE
ACCOUNT MGR.
WAREHOUSE
TECHNICAL OFFICE
ACCOUNT MGR.
INFORMATION DESK
30
We need to move a dept…
TECHNICAL OFFICE
ACCOUNT MGR.
WAREHOUSE
TECHNICAL OFFICE
ACCOUNT MGR.
31
Dependency problem!
TECHNICAL OFFICE
ACCOUNT MGR.
WAREHOUSE
TECHNICAL OFFICE
ACCOUNT MGR.
32
In our application…
CONTROLLER
VIEW
MODEL
CONTROLLER
VIEW
33
Same Problem!
CONTROLLER
VIEW
MODEL
CONTROLLER
VIEW
34
Solving company problem…
TECHNICAL OFFICE
ACCOUNT MGR.
WAREHOUSE
TECHNICAL OFFICE
ACCOUNT MGR.
INFORMATION DESK
WAREHOUSE
35
Same with our application…
CONTROLLER
VIEW
MODEL
CONTROLLER
VIEW
MODEL
36
Project delivered!
37
Let’s start a new one…
38
Hey, we need this thing!
39
No problems, folks!
MODEL
CONTROLLER
VIEW
40
http://framework.zend.com/
WELCOME ZF2 MODULES
Picture Credits: http://www.flickr.com/photos/10459273@N05/4771563267
42
Namespace Module.php Module
43
Namespace MioModulo;
Class Module {}
Namespace Module.php Module
Simplest Module:
WHAT COULD WE DO WITH IT?
Picture credits: http://www.flickr.com/photos/vittoriomilanes/8286559013
45
Format a date
Handle a
contact form
46
Format a date
Handle a
contact form
Handle ACLs
Integrate
an ORM
47
Format a date
Handle a
contact form
Handle ACLs
Integrate
an ORM
Encapsulate
a whole application
WHAAAT?
Picture credits: http://www.flickr.com/photos/elzey/3481161467/
49
Format a date
Handle a
contact form
Handle ACLs
Integrate
an ORM
Encapsulate
a whole application
Let’s think about ZF1 once again…
50
Model
Admin Panel
content management, store management, contact requests, ...
Web Site
contents, product catalogue, contact form, …
This is how modules are now…
51
Web Site
Model
Admin Panel
Content
Management
Focus on features
52
Web Site
Model
Admin Panel
Product
Catalogue
Contact
Form
Content
Management
Focus on features
53
Website
Model
Admin Panel
Product
Catalogue
Contact
Form
Content
Management
What’s in a Module?
54
Feature
What’s in a module?
55
Feature
Controller
Views
PHP Classes
Routing
Configuration
…
Business Logic Hints
56
Feature
Controller
Viste
PHP Classes
Routing
Configurazioni
…
Services
Helpers / Plugins
Mappers
…
LET’S GET OUR HANDS ON IT…
Picture credits: http://www.flickr.com/photos/vittoriomilanes/8286559013
THE SKELETON APP
Picture credits: http://www.flickr.com/photos/fil/144232588/
59
Cloning
git clone
https://github.com/zendframework/ZendSkeletonApplication
60
http://getcomposer.org/
61
composer.json
{
"name": "zendframework/skeleton-application",
"description": "Skeleton Application for ZF2",
"license": "BSD-3-Clause",
"keywords": [
"framework",
"zf2"
],
"homepage": "http://framework.zend.com/",
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.*"
}
}
62
composer.json
{
"name": "zendframework/skeleton-application",
"description": "Skeleton Application for ZF2",
"license": "BSD-3-Clause",
"keywords": [
"framework",
"zf2"
],
"homepage": "http://framework.zend.com/",
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.*"
}
}
63
Installation
cd ZendSkeletonApplication
php composer.phar self-update
php composer.phar install
64
Installation
cd ZendSkeletonApplication
php composer.phar self-update
php composer.phar install
> Installing zendframework/zendframework
66
Filesystem Layout
67
Filesystem Layout
Application Wide Configuration
68
Filesystem Layout
Misc (cached files, documents …)
69
Filesystem Layout
Public DocRoot
70
Filesystem Layout
Our Modules
Filesystem Layout
71
Third Party Modules
Focusing on a module…
72
Module specific configuration
What’s inside a module?
73
Module PHP Source Files
(Controller, Form, Model, Services, …)
What’s inside a module?
74
Module test files
What’s inside a module?
75
View stuff
(view files, layouts, partials)
LET’S BOOTSTRAP SH*T UP!
Picture credits: http://www.flickr.com/photos/fil/144232588/
index.php
<?php
/**
* This makes our life easier when dealing with paths. Everything is
* relative to the application root now.
*/
chdir(dirname(__DIR__));
// Setup autoloading
require 'init_autoloader.php';
// Run the application!
ZendMvcApplication::init(require 'config/application.config.php')->run();
index.php
<?php
/**
* This makes our life easier when dealing with paths. Everything is
* relative to the application root now.
*/
chdir(dirname(__DIR__));
// Setup autoloading
require 'init_autoloader.php';
// Run the application!
ZendMvcApplication::init(require 'config/application.config.php')->run();
config/application.config.php
79
return array(
'modules' => array(
'DoctrineModule',
'DoctrineORMModule',
'SpeckPaypal',
'Application',
),
),
...
Module.php
namespace Application;
use ZendMvcModuleRouteListener;
use ZendMvcMvcEvent;
class Module
{
public function onBootstrap(MvcEvent $e)
{[…]}
public function getConfig() {
return include __DIR__ . '/config/module.config.php';
}
public function getAutoloaderConfig() {}
}
80
Module configuration file
// config/module.config.php
return array(
'router' => array(
'routes' => array(...)
),
'controllers' => array(...),
'service_manager' => array(...),
'view_manager' => array(...),
...
)
Where’s module configuration?
82
Here!
Controllers
<?php
namespace ApplicationController;
use ZendMvcControllerAbstractActionController;
use ZendViewModelViewModel;
class IndexController extends AbstractActionController
{
public function indexAction()
{
$timestamp = time();
return new ViewModel(array(
'timestamp' => $timestamp
));
}
}
Actions
<?php
namespace ApplicationController;
use ZendMvcControllerAbstractActionController;
use ZendViewModelViewModel;
class IndexController extends AbstractActionController
{
public function indexAction()
{
$timestamp = time();
return new ViewModel(array(
'timestamp' => $timestamp
));
}
}
CONVENTION
OVER
CONFIGURATION
Picture credits: http://www.flickr.com/photos/29233640@N07/8412347937/
This is for all modules
86
return array(
'modules' => array(
'DoctrineModule',
'DoctrineORMModule',
'SpeckPaypal',
'Application',
),
),
...
config/application.config.php
87
Feature A
Controller
Views
PHP Classes
Routing
Configurations
…
88
Feature A
Controller
Views
PHP Classes
Routing
Configurations
…
Feature B
Controller
Views
PHP Classes
Routing
Configurations
…
Feature C
Controller
Views
PHP Classes
Routing
Configurations
…
89
Controller
Views
PHP Classes
Routing
Configurations
…
Controller
Views
PHP Classes
Routing
Configurations
…
Controller
Views
PHP Classes
Routing
Configurations
…
Modules are merged at runtime
CONFIGURATION MERGE
Picture credits: http://www.flickr.com/photos/michelleundihrefotos/5970015736
91
Controller
Views
Routing
…
Controller
Views
Routing
…
Controller
Views
Routing
…
Modules are merged at runtime
PHP Classes PHP Classes PHP Classes
Configurations
We can override things…
Views / Layouts
92
return array(
...
'view_manager' => array(
...
),
)
We can override things…
Views / Layouts
Routing Rules
93
return array(
...
'router' => array(
...
),
)
We can override things…
Views / Layouts
Routing Rules
All Other Configuration
Parameters
94
We can override things…
Views / Layouts
Routing Rules
All Other Configuration
Parameters
95
Do NOT modify
original 3° party
modules!
Custom Configuration
96
Do not touch
anything here!
MODULE.local.php
97
Controller
Views
Routing
…
Controllers
Views
Routing
…
Controller
Views
Routing
…
Modules are merged at runtime
PHP Classes PHP Classes PHP Classes
Configurations Configurations Configurations
This happens for all modules
98
return array(
'modules' => array(
'DoctrineModule',
'DoctrineORMModule',
'SpeckPaypal',
'Application',
),
),
...
config/application.config.php
Order
is Important!
LET’S LOOK AROUND FIRST!
Picture credits: http://www.flickr.com/photos/billward/5626976800
http://modules.zendframework.com/
100
What about a contact form?
101
What about a contact form?
10
2
cd vendor
git clone
https://github.com/weierophinney/PhlyContact.git
10
3
10
4
Here we go…
application.config.php
<?php
return array(
'modules' => array(
'PhlyContact',
'Application',
),
'module_listener_options' => array(
[…]
),
);
105
application.config.php
<?php
return array(
'modules' => array(
'PhlyContact',
'Application',
),
'module_listener_options' => array(
[…]
),
);
106
10
7
Default Configuration
PhlyContact/config/module.config.php
<?php
return array(
'phly_contact' => array(
[…]
'message' => array(
'to' => array('EMAIL HERE' => 'NAME HERE',),
'sender' => array(
'address' => 'EMAIL HERE',
'name' => 'NAME HERE',
),
'from' => array('EMAIL HERE' => 'NAME HERE',),
),
[…]
),
108
10
9
Remember:
Do NOT modify
files in here!
110
DO create and use
files herein instead
In less than 2 minutes…
111
BUILDING OUR OWN MODULES
Picture credits: http://www.flickr.com/photos/pullip_junk/6624713631
SHARED RESOURCES
Picture credits: http://www.flickr.com/photos/nasahqphoto/5162244810
Catalogue
114
Shopping Cart
115
Product
Catalogue Shopping Cart
Where shall we put this?
- id
- name
- price
Little Information Needed
116
117
Shopping Cart
Product
- id
- name
- price
We need a bit more stuff here…
118
Catalogue
119
Shopping Cart
Product
- id
- name
- price
Product
- id
- name
- price
- description
- picturePath
Catalogue
12
0
Shopping Cart
- description
- picturePath
- …
Product
- id
- name
- price
Product
- id
- name
- price
121
- description
- picturePath
- …
Product
- id
- name
- price
Catalogue Shopping Cart
/**
* CatalogueEntityProduct
* ...
*/
class Product extends EcommerceEntityCartproduct {}
Through extension
/**
* CatalogueEntityProduct
* ...
*/
class Product implements EcommerceEntityCartproductInterface {}
Through Interfaces
Constraints
How do I make this possible?
12
3
SERVICE MANAGER
Picture credits: http://www.flickr.com/photos/urbanwoodswalker/4375401057/
Service Locator
SL
Product
Controller
ShoppingCart
NOT THE REGISTRY
In a Controller Factory
<?php
public function createService(ServiceLocatorInterface $services){
$serviceLocator = $services->getServiceLocator();
$cartService = $serviceLocator->get('CartItem');
$controller = new CartController($cartService);
return $controller;
}
}
Original Module Configuration
/* Shopping Cart Module – module.config.php */
return array(
'router' => array(…),
'controllers' => array(…),
'service_manager' => array(
'invokables' => array(
'CartItem' => 'CartServiceCartItem',
),
'factories' => array(…)
)
);
Module Configuration
/* Shopping Cart Module – module.config.php */
return array(
'router' => array(…),
'controllers' => array(…),
'service_manager' => array(
'invokables' => array(
// 'CartItem' => 'CartServiceCartItem',
'CartItem' => 'CatalogueServiceCatalogueItem',
),
'factories' => array(…)
)
);
13
0
LSP in Action
Catalogue Shopping Cart
Product
- id
- name
- price
Product
- id
- name
- price
- description
- picturePath
131
Catalogue Shopping Cart
Product
- id
- name
- price
- description
- picturePath
Product
- id
- name
- price
- description
- picturePath
REUSE ENABLED
Picture credits: http://www.flickr.com/photos/89544908@N00/7877685112/
REUSE ENABLED
EVEN IN THE LARGE
Picture credits: http://www.flickr.com/photos/89544908@N00/7877685112/
134
A re-usable piece of
functionality that can be used
to construct a more complex
application.
135
Evan Coury - http://evan.pro/zf2-modules-talk.html
Back to definition
A re-usable piece of
functionality that can be used
to construct a more complex
application.
136
Evan Coury - http://evan.pro/zf2-modules-talk.html
Now I understand it better!
I hope you too.
Stefano Maraspin
@maraspin
s.maraspin@mvassociati.it
QUESTIONS?
Picture credits: http://www.flickr.com/photos/hefhoover/3929261255/
139
@maraspin
140
http://www.mvlabs.it/
Stefano Maraspin
@maraspin
s.maraspin@mvassociati.it
http://joind.in/talk/view/8655

Mais conteúdo relacionado

Mais procurados

Zend Framework 2 - presentation
Zend Framework 2 - presentationZend Framework 2 - presentation
Zend Framework 2 - presentation
yamcsha
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryYou must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular Library
Bo-Yi Wu
 

Mais procurados (20)

Quick start on Zend Framework 2
Quick start on Zend Framework 2Quick start on Zend Framework 2
Quick start on Zend Framework 2
 
Zend Framework 2 Components
Zend Framework 2 ComponentsZend Framework 2 Components
Zend Framework 2 Components
 
Instant ACLs with Zend Framework 2
Instant ACLs with Zend Framework 2Instant ACLs with Zend Framework 2
Instant ACLs with Zend Framework 2
 
Introduction to Zend Framework
Introduction to Zend FrameworkIntroduction to Zend Framework
Introduction to Zend Framework
 
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
 
Zend Framework 2 - presentation
Zend Framework 2 - presentationZend Framework 2 - presentation
Zend Framework 2 - presentation
 
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
 
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
 
WordPress and Zend Framework Integration with Vulnero
WordPress and Zend Framework Integration with VulneroWordPress and Zend Framework Integration with Vulnero
WordPress and Zend Framework Integration with Vulnero
 
OpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheConOpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheCon
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryYou must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular Library
 
Ростислав Михайлив "Zend Framework 3 - evolution or revolution"
Ростислав Михайлив "Zend Framework 3 - evolution or revolution"Ростислав Михайлив "Zend Framework 3 - evolution or revolution"
Ростислав Михайлив "Zend Framework 3 - evolution or revolution"
 
From Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMFrom Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVM
 
Maven
MavenMaven
Maven
 
Zf2 phpquebec
Zf2 phpquebecZf2 phpquebec
Zf2 phpquebec
 
Maven
MavenMaven
Maven
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
 
Cryptography with Zend Framework
Cryptography with Zend FrameworkCryptography with Zend Framework
Cryptography with Zend Framework
 
Android IPC Mechanism
Android IPC MechanismAndroid IPC Mechanism
Android IPC Mechanism
 
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
Spring Web Service, Spring JMS, Eclipse & Maven tutorialsSpring Web Service, Spring JMS, Eclipse & Maven tutorials
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
 

Destaque

Destaque (7)

Error Reporting in ZF2: form messages, custom error pages, logging
Error Reporting in ZF2: form messages, custom error pages, loggingError Reporting in ZF2: form messages, custom error pages, logging
Error Reporting in ZF2: form messages, custom error pages, logging
 
From Rails-way to modular architecture
From Rails-way to modular architectureFrom Rails-way to modular architecture
From Rails-way to modular architecture
 
Modular Building Institute Report
Modular Building Institute ReportModular Building Institute Report
Modular Building Institute Report
 
Modular Architectures: What they are why do they matter now.
Modular Architectures: What they are why do they matter now.Modular Architectures: What they are why do they matter now.
Modular Architectures: What they are why do they matter now.
 
Meet a parallel, asynchronous PHP world
Meet a parallel, asynchronous PHP worldMeet a parallel, asynchronous PHP world
Meet a parallel, asynchronous PHP world
 
Principle of architecture
Principle of architecturePrinciple of architecture
Principle of architecture
 
Pre stressed concrete- modular construction technology
Pre stressed concrete- modular construction technologyPre stressed concrete- modular construction technology
Pre stressed concrete- modular construction technology
 

Semelhante a ZF2 Modular Architecture - Taking advantage of it

Edp bootstrapping a-software_company
Edp bootstrapping a-software_companyEdp bootstrapping a-software_company
Edp bootstrapping a-software_company
Ganesh Kulkarni
 
Symfony2 Introduction Presentation
Symfony2 Introduction PresentationSymfony2 Introduction Presentation
Symfony2 Introduction Presentation
Nerd Tzanetopoulos
 
Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your project
Michelangelo van Dam
 
Multi modularized project setup with gulp, typescript and angular.js
Multi modularized project setup with gulp, typescript and angular.jsMulti modularized project setup with gulp, typescript and angular.js
Multi modularized project setup with gulp, typescript and angular.js
David Amend
 

Semelhante a ZF2 Modular Architecture - Taking advantage of it (20)

Introduction to Zend Framework 2
Introduction to Zend Framework 2Introduction to Zend Framework 2
Introduction to Zend Framework 2
 
micro-frontends-with-vuejs
micro-frontends-with-vuejsmicro-frontends-with-vuejs
micro-frontends-with-vuejs
 
Edp bootstrapping a-software_company
Edp bootstrapping a-software_companyEdp bootstrapping a-software_company
Edp bootstrapping a-software_company
 
Advanced Node.JS Meetup
Advanced Node.JS MeetupAdvanced Node.JS Meetup
Advanced Node.JS Meetup
 
Foundations of Zend Framework
Foundations of Zend FrameworkFoundations of Zend Framework
Foundations of Zend Framework
 
Symfony2 Introduction Presentation
Symfony2 Introduction PresentationSymfony2 Introduction Presentation
Symfony2 Introduction Presentation
 
JavaScript Module Loaders
JavaScript Module LoadersJavaScript Module Loaders
JavaScript Module Loaders
 
Container Runtime Security with Falco
Container Runtime Security with FalcoContainer Runtime Security with Falco
Container Runtime Security with Falco
 
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
 
Configuration Management and Transforming Legacy Applications in the Enterpri...
Configuration Management and Transforming Legacy Applications in the Enterpri...Configuration Management and Transforming Legacy Applications in the Enterpri...
Configuration Management and Transforming Legacy Applications in the Enterpri...
 
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
 
Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your project
 
Setup ColdFusion application using fusebox mvc architecture
Setup ColdFusion application using fusebox mvc architectureSetup ColdFusion application using fusebox mvc architecture
Setup ColdFusion application using fusebox mvc architecture
 
Intro to drupal_7_architecture
Intro to drupal_7_architectureIntro to drupal_7_architecture
Intro to drupal_7_architecture
 
Multi modularized project setup with gulp, typescript and angular.js
Multi modularized project setup with gulp, typescript and angular.jsMulti modularized project setup with gulp, typescript and angular.js
Multi modularized project setup with gulp, typescript and angular.js
 
ZF2 Modules: Events, Services, and of course, modularity
ZF2 Modules: Events, Services, and of course, modularityZF2 Modules: Events, Services, and of course, modularity
ZF2 Modules: Events, Services, and of course, modularity
 
Mobile Application Development MAD J2ME UNIT 2
Mobile Application Development  MAD J2ME UNIT 2Mobile Application Development  MAD J2ME UNIT 2
Mobile Application Development MAD J2ME UNIT 2
 
Modules and EmbedJS
Modules and EmbedJSModules and EmbedJS
Modules and EmbedJS
 
Principles of MVC for Rails Developers
Principles of MVC for Rails DevelopersPrinciples of MVC for Rails Developers
Principles of MVC for Rails Developers
 
Creating a Custom ML Model for your Application - Kotlin/Everywhere
Creating a Custom ML Model for your Application - Kotlin/EverywhereCreating a Custom ML Model for your Application - Kotlin/Everywhere
Creating a Custom ML Model for your Application - Kotlin/Everywhere
 

Mais de Steve Maraspin

Mais de Steve Maraspin (19)

Architetture a Microservizi (con Kubernetes)
Architetture a Microservizi (con Kubernetes)Architetture a Microservizi (con Kubernetes)
Architetture a Microservizi (con Kubernetes)
 
How Agile changed Software Development
How Agile changed Software DevelopmentHow Agile changed Software Development
How Agile changed Software Development
 
Principi di Interaction Design
Principi di Interaction DesignPrincipi di Interaction Design
Principi di Interaction Design
 
Customer Journey Mapping Workshop
Customer Journey Mapping WorkshopCustomer Journey Mapping Workshop
Customer Journey Mapping Workshop
 
A (really) Quick Introduction to Event Storming
A (really) Quick Introduction to Event StormingA (really) Quick Introduction to Event Storming
A (really) Quick Introduction to Event Storming
 
Don't Make Me Think - There's no need (2014)
Don't Make Me Think - There's no need (2014)Don't Make Me Think - There's no need (2014)
Don't Make Me Think - There's no need (2014)
 
The Metaphor Fallacy (in Digital Product Development)
The Metaphor Fallacy (in Digital Product Development)The Metaphor Fallacy (in Digital Product Development)
The Metaphor Fallacy (in Digital Product Development)
 
Lean UX: Sviluppo Software Agile e Incentrato sull'Utente
Lean UX: Sviluppo Software Agile e Incentrato sull'UtenteLean UX: Sviluppo Software Agile e Incentrato sull'Utente
Lean UX: Sviluppo Software Agile e Incentrato sull'Utente
 
La filosofia Lean nello sviluppo di prodotti digitali
La filosofia Lean nello sviluppo di prodotti digitaliLa filosofia Lean nello sviluppo di prodotti digitali
La filosofia Lean nello sviluppo di prodotti digitali
 
Outcome not Output: A Story of Lean UX Adoption
Outcome not Output: A Story of Lean UX AdoptionOutcome not Output: A Story of Lean UX Adoption
Outcome not Output: A Story of Lean UX Adoption
 
Don't Make me Think - There's no Need
Don't Make me Think - There's no NeedDon't Make me Think - There's no Need
Don't Make me Think - There's no Need
 
Fare con Zend Framework 2 ciò che facevo con ZF1
Fare con Zend Framework 2 ciò che facevo con ZF1Fare con Zend Framework 2 ciò che facevo con ZF1
Fare con Zend Framework 2 ciò che facevo con ZF1
 
NoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
NoSQL Data Stores: Introduzione alle Basi di Dati Non RelazionaliNoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
NoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
NoSQL, No Worries: Vecchi Problemi, Nuove SoluzioniNoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
 
Permettere al cliente di apprezzare l'approccio agile
Permettere al cliente di apprezzare l'approccio agilePermettere al cliente di apprezzare l'approccio agile
Permettere al cliente di apprezzare l'approccio agile
 
Let customers appreciate the agile workflow
Let customers appreciate the agile workflowLet customers appreciate the agile workflow
Let customers appreciate the agile workflow
 
Esempio di architettura distribuita basata su PHP, CouchDB e Mobile
Esempio di architettura distribuita basata su PHP, CouchDB e MobileEsempio di architettura distribuita basata su PHP, CouchDB e Mobile
Esempio di architettura distribuita basata su PHP, CouchDB e Mobile
 
Striving towards better PHP code
Striving towards better PHP codeStriving towards better PHP code
Striving towards better PHP code
 

Último

Último (20)

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
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
 
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...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
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
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

ZF2 Modular Architecture - Taking advantage of it