SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
Joomla Architecture
Revealed!
Ofer Cohen
@oc666
ofer.cohen@opensourcematters.org
About me, Joomla and Arch
● Open source volunteer since 2005.
● Joomla volunteer since 2007.
● CMS & Framework code contributor
● JBS team member
● GSoC mentor of Joomla
● Extensions Developer (TP2 at JomLand)
nie wystarczy?
● Joomla Hebrew translation coordinator
● Joomla Israeli community leader
● Joomla!Day Israel organiser
● OSM board member
● Daily job: R&D manager in the Start-Up
nation.
Joomla!
● 3.2% of all websites, worldwide
● Object Oriented since 1.5
● Components based on MVC design pattern
● What else?
Architecture?
● Architecture
the process and product of planning,
designing and construction...
● Software architecture
description of the system that support in the
understanding of how the system will behave
● Website architecture
approach to the design and planning of
websites...
Revealed?
● Who cares? It Just Works! (TM)
Revealed!
● Why is my Joomla! site slow? hacked?..
● Want to build a complicated website?
● What are the abilities of Joomla?
● What can't I do with Joomla?
● I just love to research and learn!
Object Oriented
● Data structures consisting of data fields and
methods together with their interactions
● Programming techniques include features such
as data abstraction, encapsulation, messaging,
modularity, polymorphism, and inheritance.
● This approach make your program more easy to
build and implement tricks.
Tricks?
The tricks are design patterns - reusable
solutions to commonly occurring problems
within a given context in software design.
(wikipedia)
Step back.... J! index.php
1. constants and defines declared
2. configuration loaded
3. application init triggered (lang, editor)
4. routing parsed the request (url, arguments)
5. dispatch the component
6. render the template
7. echo the response output
Looks simple, but what's inside?
1. Component is first dispatched and then
buffered.
2. Template render with their modules and
then set output into response (object).
3. Events trigger between each step.
Template Walk...
--> How is a template rendered?
1. The index.php of the template is rendered.
2. Parsing jdoc statements.
3. Each jdoc statement rendered separately,
iteratively, according to its type.
4. Component & head are parts of the
iteration, but have different rendering.
VMC... MCV... WTF? Prefer BMW?
● MVC - Model-View-Controller
Divide the software into 3 layers:
○ M=>Logic
○ V=>User interface
○ C=>Request handler
MVC - advantages
● Easier to extend.
● Less spaghetti code.
● Great approach on upgrades and new features.
● Easier collaboration between multiple
developers.
● Events handling
● Simple dispatcher can be called
● It fires events to Joomla plugins on basic
triggers.
● For example, after content creation, before
user delete, etc.
Plugin=Observer
● Supplier of the main entities of Joomla:
○ Session
○ User
○ Cache
○ Database
○ and more...
● Each entity is singleton
Factory
● Only one instance of an object is kept.
● Saves system memory usage & cpu
Singleton
Adapter
● Adapter translates one interface for a
class into a compatible interface.
● For example DB adapter for DB such as
MySQL, MSSQL, Postgresql.
● Another example would be Renderer
object for rendering output of module,
component, header, etc.
● Decouple an abstraction from its
implementation.
● Useful for implementation encapsulation.
● Especially when the program decides how
to implement on run time.
Bridge
● J!Database instance built by its
instantiator method input.
● The method will return its nested
inheritance object
● The object type would be unknown, only
the methods we can call would be known.
Bridge - example
abstract class JDatabase {
public static function getInstance($options) {
$class = 'JDatabase' . ucfirst($options['driver']);
$instance = new $class($options);
self::$instances[$signature] = $instance;
return self::$instances[$signature];
}
}
Bridge - code example from J!DB
● HMVC - reuse of each part of the MVC
pattern.
● Traits - the long tail story
● UCM - want to select from articles content
and virtuemart products at the same
query. ORM-Like methods (NOSQL).
Future
● The only complicated thing is the problem.
● The solution must be simple.
● If you have a complicated solution, you
probably chose the wrong solution (KISS)
Conclusion
Ofer Cohen
Open Source Matters
ofer.cohen@opensourcematters.org
@oc666
Thank you
Coupon: jdpl13
Discount: 50%
TP2 - drag & drop your modules

Contenu connexe

Tendances

Java Script Template Engine 비교하기
Java Script Template Engine 비교하기Java Script Template Engine 비교하기
Java Script Template Engine 비교하기SeongSik Choi
 
Introducing Android Programming
Introducing Android ProgrammingIntroducing Android Programming
Introducing Android ProgrammingArif Huda
 
JavaScript Roadmap III - ECMAScript
JavaScript Roadmap III - ECMAScriptJavaScript Roadmap III - ECMAScript
JavaScript Roadmap III - ECMAScriptAswin Barath
 
Build a Bot Workshop
Build a Bot WorkshopBuild a Bot Workshop
Build a Bot WorkshopBasant Medhat
 
Webdev bootcamp
Webdev bootcampWebdev bootcamp
Webdev bootcampDSCMESCOE
 
Power Leveling your TypeScript
Power Leveling your TypeScriptPower Leveling your TypeScript
Power Leveling your TypeScriptOffirmo
 
Introducing type script
Introducing type scriptIntroducing type script
Introducing type scriptRemo Jansen
 
Features of JAVA Programming Language.
Features of JAVA Programming Language.Features of JAVA Programming Language.
Features of JAVA Programming Language.Bhautik Jethva
 
Projects in Enterprise Java (Java EE)
Projects in Enterprise Java (Java EE)Projects in Enterprise Java (Java EE)
Projects in Enterprise Java (Java EE)Sam Dias
 
Behavior Driven Education: A Story of Learning ROR
Behavior Driven Education: A Story of Learning RORBehavior Driven Education: A Story of Learning ROR
Behavior Driven Education: A Story of Learning RORSmartLogic
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponLaurent Duveau
 
Introduction to java
Introduction to java Introduction to java
Introduction to java sanjay joshi
 

Tendances (20)

Java Script Template Engine 비교하기
Java Script Template Engine 비교하기Java Script Template Engine 비교하기
Java Script Template Engine 비교하기
 
Javascript 01 (js)
Javascript 01 (js)Javascript 01 (js)
Javascript 01 (js)
 
TypeScript Overview
TypeScript OverviewTypeScript Overview
TypeScript Overview
 
Introducing Android Programming
Introducing Android ProgrammingIntroducing Android Programming
Introducing Android Programming
 
Javascripts. pptt
Javascripts. ppttJavascripts. pptt
Javascripts. pptt
 
JavaScript Roadmap III - ECMAScript
JavaScript Roadmap III - ECMAScriptJavaScript Roadmap III - ECMAScript
JavaScript Roadmap III - ECMAScript
 
Build a Bot Workshop
Build a Bot WorkshopBuild a Bot Workshop
Build a Bot Workshop
 
Webdev bootcamp
Webdev bootcampWebdev bootcamp
Webdev bootcamp
 
Power Leveling your TypeScript
Power Leveling your TypeScriptPower Leveling your TypeScript
Power Leveling your TypeScript
 
Spring presentation
Spring presentationSpring presentation
Spring presentation
 
Introducing type script
Introducing type scriptIntroducing type script
Introducing type script
 
Features of JAVA Programming Language.
Features of JAVA Programming Language.Features of JAVA Programming Language.
Features of JAVA Programming Language.
 
Basic of Java
Basic of JavaBasic of Java
Basic of Java
 
Projects in Enterprise Java (Java EE)
Projects in Enterprise Java (Java EE)Projects in Enterprise Java (Java EE)
Projects in Enterprise Java (Java EE)
 
TypeScript Presentation
TypeScript PresentationTypeScript Presentation
TypeScript Presentation
 
Behavior Driven Education: A Story of Learning ROR
Behavior Driven Education: A Story of Learning RORBehavior Driven Education: A Story of Learning ROR
Behavior Driven Education: A Story of Learning ROR
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret Weapon
 
TypeScript intro
TypeScript introTypeScript intro
TypeScript intro
 
Introduction to java
Introduction to java Introduction to java
Introduction to java
 
Learning typescript
Learning typescriptLearning typescript
Learning typescript
 

En vedette

וורדפרס, ג'ומלה, דרופל וכל מה שביניהם‏
וורדפרס, ג'ומלה, דרופל  וכל מה שביניהם‏וורדפרס, ג'ומלה, דרופל  וכל מה שביניהם‏
וורדפרס, ג'ומלה, דרופל וכל מה שביניהם‏Ofer Cohen
 
Social media en de kmo
Social media en de kmoSocial media en de kmo
Social media en de kmoBusiness 2.0
 
Computer virus
Computer virusComputer virus
Computer viruskiran_a_c
 
Israel Joomla! 1.6 Party
Israel Joomla! 1.6 PartyIsrael Joomla! 1.6 Party
Israel Joomla! 1.6 PartyOfer Cohen
 
รายชื่อ รอจับฉลากไปร่วมกิจกรรม
รายชื่อ รอจับฉลากไปร่วมกิจกรรมรายชื่อ รอจับฉลากไปร่วมกิจกรรม
รายชื่อ รอจับฉลากไปร่วมกิจกรรมอสูร พฤษภาทมิฬ
 
Joomla!Day 2013 India
Joomla!Day 2013 IndiaJoomla!Day 2013 India
Joomla!Day 2013 IndiaOfer Cohen
 
Wordcamp Jerusalem 2013 - what if Wordpress was not open source
Wordcamp Jerusalem 2013 - what if Wordpress was not open sourceWordcamp Jerusalem 2013 - what if Wordpress was not open source
Wordcamp Jerusalem 2013 - what if Wordpress was not open sourceOfer Cohen
 
Cloud Computing, iets voor u?
Cloud Computing, iets voor u?Cloud Computing, iets voor u?
Cloud Computing, iets voor u?Business 2.0
 
Proposals, contracts and clients for web developers - Ofer Cohen
Proposals, contracts and clients for web developers - Ofer CohenProposals, contracts and clients for web developers - Ofer Cohen
Proposals, contracts and clients for web developers - Ofer CohenOfer Cohen
 
ג'ומלה ישראל - ותיקים מדריכים חדשים
ג'ומלה ישראל - ותיקים מדריכים חדשיםג'ומלה ישראל - ותיקים מדריכים חדשים
ג'ומלה ישראל - ותיקים מדריכים חדשיםOfer Cohen
 
Joomla!Day Israel 2012 - The business of Joomla
Joomla!Day Israel 2012 - The business of JoomlaJoomla!Day Israel 2012 - The business of Joomla
Joomla!Day Israel 2012 - The business of JoomlaOfer Cohen
 
BillRun and Joomla - How is Joomla relate to billing system
BillRun and Joomla - How is Joomla relate to billing systemBillRun and Joomla - How is Joomla relate to billing system
BillRun and Joomla - How is Joomla relate to billing systemOfer Cohen
 
Jab12 - Joomla! architecture revealed
Jab12 - Joomla! architecture revealedJab12 - Joomla! architecture revealed
Jab12 - Joomla! architecture revealedOfer Cohen
 
Joomla!Day Poland 2013 - Joomla and Open Source - How it works and how can I ...
Joomla!Day Poland 2013 - Joomla and Open Source - How it works and how can I ...Joomla!Day Poland 2013 - Joomla and Open Source - How it works and how can I ...
Joomla!Day Poland 2013 - Joomla and Open Source - How it works and how can I ...Ofer Cohen
 
MongoDB World 2014 - BillRun, Billing on top of MongoDB
MongoDB World 2014 - BillRun, Billing on top of MongoDBMongoDB World 2014 - BillRun, Billing on top of MongoDB
MongoDB World 2014 - BillRun, Billing on top of MongoDBOfer Cohen
 

En vedette (18)

וורדפרס, ג'ומלה, דרופל וכל מה שביניהם‏
וורדפרס, ג'ומלה, דרופל  וכל מה שביניהם‏וורדפרס, ג'ומלה, דרופל  וכל מה שביניהם‏
וורדפרס, ג'ומלה, דרופל וכל מה שביניהם‏
 
Social media en de kmo
Social media en de kmoSocial media en de kmo
Social media en de kmo
 
Outlook
OutlookOutlook
Outlook
 
Computer virus
Computer virusComputer virus
Computer virus
 
Israel Joomla! 1.6 Party
Israel Joomla! 1.6 PartyIsrael Joomla! 1.6 Party
Israel Joomla! 1.6 Party
 
รายชื่อ รอจับฉลากไปร่วมกิจกรรม
รายชื่อ รอจับฉลากไปร่วมกิจกรรมรายชื่อ รอจับฉลากไปร่วมกิจกรรม
รายชื่อ รอจับฉลากไปร่วมกิจกรรม
 
Seo
SeoSeo
Seo
 
Joomla!Day 2013 India
Joomla!Day 2013 IndiaJoomla!Day 2013 India
Joomla!Day 2013 India
 
Wordcamp Jerusalem 2013 - what if Wordpress was not open source
Wordcamp Jerusalem 2013 - what if Wordpress was not open sourceWordcamp Jerusalem 2013 - what if Wordpress was not open source
Wordcamp Jerusalem 2013 - what if Wordpress was not open source
 
Cloud Computing, iets voor u?
Cloud Computing, iets voor u?Cloud Computing, iets voor u?
Cloud Computing, iets voor u?
 
Proposals, contracts and clients for web developers - Ofer Cohen
Proposals, contracts and clients for web developers - Ofer CohenProposals, contracts and clients for web developers - Ofer Cohen
Proposals, contracts and clients for web developers - Ofer Cohen
 
Mindmapping
MindmappingMindmapping
Mindmapping
 
ג'ומלה ישראל - ותיקים מדריכים חדשים
ג'ומלה ישראל - ותיקים מדריכים חדשיםג'ומלה ישראל - ותיקים מדריכים חדשים
ג'ומלה ישראל - ותיקים מדריכים חדשים
 
Joomla!Day Israel 2012 - The business of Joomla
Joomla!Day Israel 2012 - The business of JoomlaJoomla!Day Israel 2012 - The business of Joomla
Joomla!Day Israel 2012 - The business of Joomla
 
BillRun and Joomla - How is Joomla relate to billing system
BillRun and Joomla - How is Joomla relate to billing systemBillRun and Joomla - How is Joomla relate to billing system
BillRun and Joomla - How is Joomla relate to billing system
 
Jab12 - Joomla! architecture revealed
Jab12 - Joomla! architecture revealedJab12 - Joomla! architecture revealed
Jab12 - Joomla! architecture revealed
 
Joomla!Day Poland 2013 - Joomla and Open Source - How it works and how can I ...
Joomla!Day Poland 2013 - Joomla and Open Source - How it works and how can I ...Joomla!Day Poland 2013 - Joomla and Open Source - How it works and how can I ...
Joomla!Day Poland 2013 - Joomla and Open Source - How it works and how can I ...
 
MongoDB World 2014 - BillRun, Billing on top of MongoDB
MongoDB World 2014 - BillRun, Billing on top of MongoDBMongoDB World 2014 - BillRun, Billing on top of MongoDB
MongoDB World 2014 - BillRun, Billing on top of MongoDB
 

Similaire à Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)

FRU Kathmandu: Adopting with Change Frontend Architecture and Patterns
FRU Kathmandu: Adopting with Change Frontend Architecture and PatternsFRU Kathmandu: Adopting with Change Frontend Architecture and Patterns
FRU Kathmandu: Adopting with Change Frontend Architecture and PatternsLeapfrog Technology Inc.
 
React - The JavaScript Library for User Interfaces
React - The JavaScript Library for User InterfacesReact - The JavaScript Library for User Interfaces
React - The JavaScript Library for User InterfacesJumping Bean
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present futurelolopetit
 
JavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web frameworkJavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web frameworkAlive Kuo
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring FrameworkHùng Nguyễn Huy
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JSFestUA
 
React for Non Techies
React for Non TechiesReact for Non Techies
React for Non TechiesJack Hoy
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendVlad Fedosov
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Marco Breveglieri
 
React for non techies
React for non techiesReact for non techies
React for non techiesAmy Crimmens
 
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React NativeEric Deng
 
Design patterns in javascript
Design patterns in javascriptDesign patterns in javascript
Design patterns in javascriptAyush Sharma
 
Professionalizing the Front-end
Professionalizing the Front-endProfessionalizing the Front-end
Professionalizing the Front-endJordi Anguela
 
Workshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design PatternsWorkshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design PatternsVisual Engineering
 
How I Built My Code Editor in Ruby
How I Built My Code Editor in RubyHow I Built My Code Editor in Ruby
How I Built My Code Editor in RubyAndy Maleh
 
RichFaces CDK: Rapid JSF Component Development
RichFaces CDK: Rapid JSF Component DevelopmentRichFaces CDK: Rapid JSF Component Development
RichFaces CDK: Rapid JSF Component DevelopmentLukáš Fryč
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
 

Similaire à Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen) (20)

Dust.js
Dust.jsDust.js
Dust.js
 
FRU Kathmandu: Adopting with Change Frontend Architecture and Patterns
FRU Kathmandu: Adopting with Change Frontend Architecture and PatternsFRU Kathmandu: Adopting with Change Frontend Architecture and Patterns
FRU Kathmandu: Adopting with Change Frontend Architecture and Patterns
 
React - The JavaScript Library for User Interfaces
React - The JavaScript Library for User InterfacesReact - The JavaScript Library for User Interfaces
React - The JavaScript Library for User Interfaces
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
 
Nightwatch 101 - Salvador Molina
Nightwatch 101 - Salvador MolinaNightwatch 101 - Salvador Molina
Nightwatch 101 - Salvador Molina
 
JavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web frameworkJavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web framework
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
 
React for Non Techies
React for Non TechiesReact for Non Techies
React for Non Techies
 
React for non techies
React for non techiesReact for non techies
React for non techies
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
 
React for non techies
React for non techiesReact for non techies
React for non techies
 
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native
 
Design patterns in javascript
Design patterns in javascriptDesign patterns in javascript
Design patterns in javascript
 
Professionalizing the Front-end
Professionalizing the Front-endProfessionalizing the Front-end
Professionalizing the Front-end
 
Workshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design PatternsWorkshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design Patterns
 
How I Built My Code Editor in Ruby
How I Built My Code Editor in RubyHow I Built My Code Editor in Ruby
How I Built My Code Editor in Ruby
 
RichFaces CDK: Rapid JSF Component Development
RichFaces CDK: Rapid JSF Component DevelopmentRichFaces CDK: Rapid JSF Component Development
RichFaces CDK: Rapid JSF Component Development
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 

Dernier

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
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 educationjfdjdjcjdnsjd
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
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?Antenna Manufacturer Coco
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
[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.pdfhans926745
 
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 FresherRemote DBA Services
 
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
 
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 WorkerThousandEyes
 

Dernier (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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?
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
[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
 
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
 
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
 
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
 

Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)

  • 2. About me, Joomla and Arch ● Open source volunteer since 2005. ● Joomla volunteer since 2007. ● CMS & Framework code contributor ● JBS team member ● GSoC mentor of Joomla ● Extensions Developer (TP2 at JomLand)
  • 3. nie wystarczy? ● Joomla Hebrew translation coordinator ● Joomla Israeli community leader ● Joomla!Day Israel organiser ● OSM board member ● Daily job: R&D manager in the Start-Up nation.
  • 4. Joomla! ● 3.2% of all websites, worldwide ● Object Oriented since 1.5 ● Components based on MVC design pattern ● What else?
  • 5. Architecture? ● Architecture the process and product of planning, designing and construction... ● Software architecture description of the system that support in the understanding of how the system will behave ● Website architecture approach to the design and planning of websites...
  • 6. Revealed? ● Who cares? It Just Works! (TM)
  • 7. Revealed! ● Why is my Joomla! site slow? hacked?.. ● Want to build a complicated website? ● What are the abilities of Joomla? ● What can't I do with Joomla? ● I just love to research and learn!
  • 8. Object Oriented ● Data structures consisting of data fields and methods together with their interactions ● Programming techniques include features such as data abstraction, encapsulation, messaging, modularity, polymorphism, and inheritance. ● This approach make your program more easy to build and implement tricks.
  • 9. Tricks? The tricks are design patterns - reusable solutions to commonly occurring problems within a given context in software design. (wikipedia)
  • 10. Step back.... J! index.php 1. constants and defines declared 2. configuration loaded 3. application init triggered (lang, editor) 4. routing parsed the request (url, arguments) 5. dispatch the component 6. render the template 7. echo the response output
  • 11. Looks simple, but what's inside? 1. Component is first dispatched and then buffered. 2. Template render with their modules and then set output into response (object). 3. Events trigger between each step.
  • 12. Template Walk... --> How is a template rendered? 1. The index.php of the template is rendered. 2. Parsing jdoc statements. 3. Each jdoc statement rendered separately, iteratively, according to its type. 4. Component & head are parts of the iteration, but have different rendering.
  • 13. VMC... MCV... WTF? Prefer BMW? ● MVC - Model-View-Controller Divide the software into 3 layers: ○ M=>Logic ○ V=>User interface ○ C=>Request handler
  • 14. MVC - advantages ● Easier to extend. ● Less spaghetti code. ● Great approach on upgrades and new features. ● Easier collaboration between multiple developers.
  • 15. ● Events handling ● Simple dispatcher can be called ● It fires events to Joomla plugins on basic triggers. ● For example, after content creation, before user delete, etc. Plugin=Observer
  • 16. ● Supplier of the main entities of Joomla: ○ Session ○ User ○ Cache ○ Database ○ and more... ● Each entity is singleton Factory
  • 17. ● Only one instance of an object is kept. ● Saves system memory usage & cpu Singleton
  • 18. Adapter ● Adapter translates one interface for a class into a compatible interface. ● For example DB adapter for DB such as MySQL, MSSQL, Postgresql. ● Another example would be Renderer object for rendering output of module, component, header, etc.
  • 19. ● Decouple an abstraction from its implementation. ● Useful for implementation encapsulation. ● Especially when the program decides how to implement on run time. Bridge
  • 20. ● J!Database instance built by its instantiator method input. ● The method will return its nested inheritance object ● The object type would be unknown, only the methods we can call would be known. Bridge - example
  • 21. abstract class JDatabase { public static function getInstance($options) { $class = 'JDatabase' . ucfirst($options['driver']); $instance = new $class($options); self::$instances[$signature] = $instance; return self::$instances[$signature]; } } Bridge - code example from J!DB
  • 22. ● HMVC - reuse of each part of the MVC pattern. ● Traits - the long tail story ● UCM - want to select from articles content and virtuemart products at the same query. ORM-Like methods (NOSQL). Future
  • 23. ● The only complicated thing is the problem. ● The solution must be simple. ● If you have a complicated solution, you probably chose the wrong solution (KISS) Conclusion
  • 24. Ofer Cohen Open Source Matters ofer.cohen@opensourcematters.org @oc666 Thank you
  • 25. Coupon: jdpl13 Discount: 50% TP2 - drag & drop your modules