phpbootcamp - joomla! framework
DESCRIPTION
Presentation given at the PHPBootCamp.nl on the 2th of june 2007. Other frameworks presented where Zend and Symfony.TRANSCRIPT
Joomla! Framework
PHPBootCamp NL, June 2007
TextStick to the code !
The code is not like rules it’s more a set of guidelines
http://www.joomla.org 1
About me
Johan ‘Jinx’ JanssensJoomla! Project manager and lead developer
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 2
What is Joomla!
Open Source Content Management System
Jumla (Swahili) : all together
Founded in september 2006
Rebrand from Mambo
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 3
zendCreative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 4
symfonyCreative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 5
joomlaCreative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 6
situation
Content Management Framework
Web Application Framework
PHP Class Library
Joomla!
Symfony
Zend
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 7
Intro
1. Goals
2. Philosophy
2. Architecture
3. Framework
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 8
Goals
Goals
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 9
Goals
Joomla! 1.5 Goals
1. Internationalisation
2. Application framework
3. Extendibility
4. Accessibility/Usability
5. Backwards compatiblity
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 10
Goals
ww.ohloh.net
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 11
Philosophy
Philosophy
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 12
Philosophy
Joomla! concepts
opensource content management
• freedom
• choice
• control
• fun
• keep is small simple (KISS)
• be flexible and agile
• design to be extendible
• reduce choice
• use the 80/20 principle Richard Koche : www.the8020principle.com/
Barry Swharts : video.google.com/videoplay?docid=6127548813950043200
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 13
Architecture
Architecture
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 14
ArchitectureCreative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 15
Architecture
Joomla! CMS
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 16
Architecture
Joomla! CMS
Joomla! CMF
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 17
Architecture
Joomla! CMS
Joomla! CMF
Extensions
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 18
Architecture
Joomla! CMS
Joomla! CMF
Extensions
Application
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 19
Architecture
Joomla! CMS
Joomla! CMF
Extensions
Application
Framework
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 20
Architecture
Joomla ! CMS
Joomla! CMF
Libraries Plugins
Extensions
Application
Framework
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 21
Architecture
Joomla ! CMS
Joomla! CMF
XML-RPCInstallationSiteAdministrator
Libraries Plugins
Extensions
Application
Framework
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 22
Architecture
Joomla ! CMS
Joomla! CMF
Components Modules Templates Languages
XML-RPCInstallationSiteAdministrator
Libraries Plugins
Extensions
Application
Framework
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 23
Framework
Framework
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 24
Framework
Why yet another PHP framework ?
Zend Mojavi
CakePHP
PHPWACT
Mojavi
PHPOnTrax
Studs Prado
CodeIgniter
SymfonyAchievo
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 25
Framework
Framework principles
1. Pragmatic programming concepts
2. Object Oriented API
4. Modularised design
5. Focussed on content management
6. Build for PHP4 and upwards compatible with PHP5
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 26
Framework
Framework concepts
1. Decouple as much as possible
2. Use design patterns where possible
3. Don’t repeat yourself (DRY)
4. Remember the big picture
5. Create declarative interfaces
6. Keep it dry, shy, and tell the other guywww.pragmaticprogrammer.com/articles/may_04_oo1.pdf
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 27
Framework
Framework design patterns
1. Factory pattern
2. Singleton pattern
3. Template pattern
4. Adapter pattern
5. Composition pattern
6. Registry pattern
7. Observer pattern
8. MVC pattern
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 28
Framework
Framework packages
1. application
2. base
3. cache
4. client
5. database`
6. document
7. environment
8. event
9. filesystem
10. filter
11. html
12. i18n
11. installer
12. registry
13. session
14. template
15. user
16. utilities
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 29
Framework
See also : http://dev.joomla.org/component/option,com_jd-wp/Itemid,33/p,201/
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 30
Future
What about the future ?
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 31
FutureCreative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 32
Questions
Questions ?
Stump the geek
Creative Commons Attribution-Noncommercial-Share Alike 2.0
http://www.joomla.org 33
References
References
• Download 1.5 nightly http://dev.joomla.org/content/view/17/60/
• Screenshots of 1.5 http://joomla15.blogspot.com
Creative Commons Attribution-Noncommercial-Share Alike 2.0