joomla frameworks kung fu
DESCRIPTION
My presentation about developing high quality code at JandBeyond 2011.TRANSCRIPT
![Page 1: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/1.jpg)
JOOMLA! FRAMEWORKSKUNG FU
OLEG NESTEROV
J and Beyond ConferenceThe Netherlands, May 2011www.jandbeyond.org
![Page 2: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/2.jpg)
![Page 3: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/3.jpg)
High Quality Code
Not Repeating Yourself
![Page 4: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/4.jpg)
![Page 5: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/5.jpg)
70%
spaghetti code
![Page 6: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/6.jpg)
What is a framework?
Developing with Joomla 1.5 framework.
Other frameworks for Joomla.
![Page 7: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/7.jpg)
WHAT IS A FRAMEWORK
![Page 8: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/8.jpg)
A set of tools which allows you to concentrate on the business logic of your app while it takes up everything else!
![Page 9: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/9.jpg)
GENERALARCHITECTURE
![Page 10: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/10.jpg)
GENERALARCHITECTURE
![Page 11: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/11.jpg)
SECURITY
![Page 12: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/12.jpg)
SECURITY
![Page 13: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/13.jpg)
DATABASEMANAGEMENT
![Page 14: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/14.jpg)
DATABASEMANAGEMENT
![Page 15: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/15.jpg)
PATTERNS:MVC, Factory, etc.
![Page 16: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/16.jpg)
PATTERNS:MVC, Factory, etc.
![Page 17: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/17.jpg)
FILES & CLASSESMANAGEMENT
![Page 18: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/18.jpg)
FILES & CLASSESMANAGEMENT
![Page 19: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/19.jpg)
DISPATCHING
![Page 20: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/20.jpg)
DISPATCHING
![Page 21: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/21.jpg)
ROUTINE TASKS
![Page 22: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/22.jpg)
ROUTINE TASKS
![Page 23: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/23.jpg)
OVERRIDE IT
![Page 24: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/24.jpg)
OVERRIDE IT
![Page 25: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/25.jpg)
1. Give me a full-featured webshop,2. test it,3. and beer please.
FULLFIL 3 OF MY WISHES
![Page 26: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/26.jpg)
Overriding / Hooking
Routine Tasks
Dispatching
Autoloading
MVC
Database
Security
Architecture
![Page 27: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/27.jpg)
Overriding / Hooking
Routine Tasks
Dispatching
Autoloading
MVC
Database
Security
Architecture
![Page 28: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/28.jpg)
YOU CAN CREATE GOOD CODE WITH JOOMLA!
![Page 29: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/29.jpg)
Application Base Cache Client Database
Document Environment Error Event File
system Filter HTML Installer Language Mail Plugin
Registry Session Template User Utilities and more…
… not bad
![Page 30: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/30.jpg)
FILTER INPUT, ESCAPE OUTPUT!
JRequestJDatabase::Quote, getEscaped, int
http://shiflett.org/blog/2005/feb/my-top-two-php-security-practiceshttp://docs.joomla.org/Developers#Security
![Page 31: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/31.jpg)
JLoaderjimportrequire_once
![Page 32: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/32.jpg)
Loader Classregisters
System Plugin
![Page 33: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/33.jpg)
Joomla 1.5 way
![Page 34: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/34.jpg)
Joomla 1.5 way
MAIN CONTROLLER
Controller 1
Controller 2
Controller n…
![Page 35: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/35.jpg)
Joomla 1.5 way
MAIN CONTROLLER
In fact: 0 controllers
![Page 36: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/36.jpg)
Joomla 1.6 way
MASTER CONTROLLER
Controller 1
Controller 2
Controller n…
http://docs.joomla.org/JController_and_its_subclass_usage_overview
![Page 37: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/37.jpg)
BASE DISPATCHER
Component Dispatcher
dispatch()
![Page 38: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/38.jpg)
1 line of code
MyDispatcher::dispatch(array('component_name' => mycp', 'default_view' => ‘my‘ ));
![Page 39: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/39.jpg)
ControllerView
Model
User
![Page 40: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/40.jpg)
NO FRAMEWORK WILL HELP YOU IF YOU DON’T UNDERSTAND MVC!
![Page 41: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/41.jpg)
СONTROLLERIS THE BOSS!
![Page 42: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/42.jpg)
Getting request data;
Getting model & view instances;
Updating model states;
Calling model action methods
(e.g. delete, save, remove);
Calling view methods to render a
template.
Database tasks;
Manipulating model
data;
Rendering templates.
![Page 43: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/43.jpg)
MODEL ISA HARD WORKER!
![Page 44: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/44.jpg)
Storing a state;
Performing database tasks;
Formatting data;
…all other data tasks.
Getting request data;
Rendering templates.
![Page 45: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/45.jpg)
VIEWIS A STYLIST!
![Page 46: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/46.jpg)
Rendering
templates
![Page 47: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/47.jpg)
JCONTROLLER
JMODEL
JVIEW
![Page 48: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/48.jpg)
A simple list with filtering
![Page 49: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/49.jpg)
View
Controller Modelrequest state
model with updated state
display()
![Page 50: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/50.jpg)
View
Controller Modelrequest state
model with updated state
display()
no state
![Page 51: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/51.jpg)
Make
JController::getModel
method to store a model
![Page 52: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/52.jpg)
1 DB TABLE = 1 MVC
![Page 53: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/53.jpg)
![Page 54: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/54.jpg)
BORING TASKS
![Page 55: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/55.jpg)
SEND BORING TASKSTO YOUR FRAMEWORK
![Page 56: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/56.jpg)
It’s all about CRUD, both
on the back-end & front-
end
![Page 57: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/57.jpg)
IT’s all about lists &
forms
![Page 58: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/58.jpg)
Base Classes
Boring tasks
code
![Page 59: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/59.jpg)
SYSTEM PLUGIN
LIBRARIES FOLDER
COMPONENT
![Page 60: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/60.jpg)
Magic methods,Interfaces,Exceptions,…
it’s high time to implement them!
![Page 61: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/61.jpg)
NOOKU FRAMEWORK: A MUST SEE FOR EVERY J! DEVELOPER!
![Page 62: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/62.jpg)
KLoader,KFactory,Mixins,HMVC,…
That is awesome!
![Page 63: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/63.jpg)
CMSLAYER: A DIOSCOURI’S CODEBASE FOR LOADING EXTENSIONS ON DIFFERENT SYSTEMS!
![Page 64: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/64.jpg)
cmsLayer base
Implementation 1
cmsLayer interface
Implementation 2
Implementation n
![Page 65: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/65.jpg)
cmsLayer base
Feature1 Feature 2 Feature n
![Page 66: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/66.jpg)
Joomla!
cmsLayer
DrupalWP
product
![Page 67: Joomla Frameworks Kung Fu](https://reader037.vdocument.in/reader037/viewer/2022102722/554bca33b4c90594278b583a/html5/thumbnails/67.jpg)
http://twitter.com/onesterov
http://onesterov.com
http://www.slideshare.net/onesterov
http://mindk.com
WRITE GOOD CODE & BE HAPPY