Difference between revisions of "Framework (CMS 1.5 and 1.6)"

From Joomla! Documentation

m (Added link for JDocumentXML)
(Added architecture diagram and reworded some of the explanatory text. Moved constants to separate page.)
Line 1: Line 1:
 
{{RightTOC}}
 
{{RightTOC}}
[[Category:Development]]
 
[[Category:Framework]]
 
 
<blockquote>
 
<blockquote>
 
''A '''software framework''' is a reusable design for a software system (or subsystem). This is expressed as a set of [[:Wikipedia:abstract class|abstract class]]es and the way their instances collaborate for a specific type of software. Software frameworks can be [[:Wikipedia:Object-oriented programming|object-oriented designs]]. Although designs don't have to be implemented in an object-oriented language, they usually are. A software framework may include support programs, code [[:Wikipedia:Libraries|libraries]]<ref>[[PHP libraries]] bundled with Joomla!</ref>, a [[:Wikipedia:JavaScript|scripting language]]<ref>[[JavaScript libraries]] bundled with Joomla!</ref>, or other software to help develop and ''glue together'' the different components of a software project. Various parts of the framework may be exposed through an application programming interface ([[:Wikipedia:Application programming interface|API]]).''
 
''A '''software framework''' is a reusable design for a software system (or subsystem). This is expressed as a set of [[:Wikipedia:abstract class|abstract class]]es and the way their instances collaborate for a specific type of software. Software frameworks can be [[:Wikipedia:Object-oriented programming|object-oriented designs]]. Although designs don't have to be implemented in an object-oriented language, they usually are. A software framework may include support programs, code [[:Wikipedia:Libraries|libraries]]<ref>[[PHP libraries]] bundled with Joomla!</ref>, a [[:Wikipedia:JavaScript|scripting language]]<ref>[[JavaScript libraries]] bundled with Joomla!</ref>, or other software to help develop and ''glue together'' the different components of a software project. Various parts of the framework may be exposed through an application programming interface ([[:Wikipedia:Application programming interface|API]]).''
Line 7: Line 5:
 
</blockquote>
 
</blockquote>
  
= Joomla! Framework =
+
[[Image:JoomlaArchitecture0.png]]
[[:Category:Joomla! 1.5|Joomla! 1.5]] is a three tiered system. The bottom tier is the framework level and consists of the [[:Category:Framework package|libraries]] and plugins (formerly known as mambots). The second tier is the application level and consists of the [[JApplication]] class. Currently there are four<ref>The fourth, "hidden" application is the [[XMP-RPC]] server.</ref> applications that ship with Joomla: [[JInstallation]], [[JAdministrator]] and [[JSite]]. The application acts as the main controller for the page.
 
  
The third tier is the [[Extension|extension level]]. This level is where all [[:Component|component]], [[Module|module]], and [[Template|template]] logic is executed and rendered.
+
[[:Category:Joomla! 1.5|Joomla! 1.5]] is a three tiered system:-
 
+
* The top, Extensions layer, consists of [[Extension|Extensions]] to the Joomla [[Framework]] and its applications:
== Application Constants ==
+
** [[Module|Modules]]
 
+
** [[Component|Components]]
Each application type defines several constants:
+
** [[Template|Templates]]
 
+
* The middle, Application layer, consists of applications that extend the Framework [[JApplication]] class. Currently there are four applications included in the Joomla distribution:-
  JPATH_ROOT          The path to the installed Joomla! site
+
** [[JInstallation]] is responsible for installing Joomla on a web server and is deleted after the installation procedure has been completed.
JPATH_SITE          The path to the installed Joomla! site
+
** [[JAdministrator]] is responsible for the back-end Administrator.
JPATH_CONFIGURATION The path to folder containing the configuration.php file
+
** [[JSite]] is responsible for the front-end of the website.
JPATH_ADMINISTRATOR The path to the administrator folder
+
** [[XML-RPC]] supports remote administration of the Joomla website.
JPATH_XMLRPC        The path to the XML-RPC Web service folder
+
* The bottom, Framework layer, consists of:-
JPATH_LIBRARIES    The path to the libraries folder
+
** the Joomla [[Framework]] itself, whose classes are listed below.
JPATH_PLUGINS      The path to the plugins folder
+
** [[Library|Libraries]] that are required by the [[Framework]] or are installed for use by third-party developers.
JPATH_INSTALLATION  The path to the installation folder
+
** [[Plugin|Plugins]] extend the functionality available in the [[Framework]].
JPATH_THEMES        The path to the templates folder
 
JPATH_CACHE        The path to the cache folder
 
JPATH_COMPONENT    The path to the current component being executed
 
 
 
These constants are defined in <code>_path_/includes/defines.php</code>
 
  
 
== Packages and Classes ==
 
== Packages and Classes ==
Line 232: Line 224:
 
==See also==
 
==See also==
 
<references />
 
<references />
 +
<noinclude>[[Category:Development]][[Category:Framework]]</noinclude>

Revision as of 14:47, 6 January 2009

A software framework is a reusable design for a software system (or subsystem). This is expressed as a set of abstract classes and the way their instances collaborate for a specific type of software. Software frameworks can be object-oriented designs. Although designs don't have to be implemented in an object-oriented language, they usually are. A software framework may include support programs, code libraries[1], a scripting language[2], or other software to help develop and glue together the different components of a software project. Various parts of the framework may be exposed through an application programming interface (API).

From Wikipedia

JoomlaArchitecture0.png

Joomla! 1.5 is a three tiered system:-

  • The top, Extensions layer, consists of Extensions to the Joomla Framework and its applications:
  • The middle, Application layer, consists of applications that extend the Framework JApplication class. Currently there are four applications included in the Joomla distribution:-
    • JInstallation is responsible for installing Joomla on a web server and is deleted after the installation procedure has been completed.
    • JAdministrator is responsible for the back-end Administrator.
    • JSite is responsible for the front-end of the website.
    • XML-RPC supports remote administration of the Joomla website.
  • The bottom, Framework layer, consists of:-
    • the Joomla Framework itself, whose classes are listed below.
    • Libraries that are required by the Framework or are installed for use by third-party developers.
    • Plugins extend the functionality available in the Framework.

Packages and Classes[edit]

The classes in the Joomla! Framework are loosely grouped into several different packages.

Application[edit]

Base[edit]

Cache[edit]

Client[edit]

Database[edit]

Document[edit]

Environment[edit]

Error[edit]

Event[edit]

Filesystem[edit]

Filter[edit]

HTML[edit]

Installer[edit]

Language[edit]

Mail[edit]

Plugin[edit]

Registry[edit]

Session[edit]

Template[edit]

This package is deprecated. Template extensions are part of the Document package now.

User[edit]

Utilities[edit]

See also[edit]

  1. PHP libraries bundled with Joomla!
  2. JavaScript libraries bundled with Joomla!