Architecture

Can be Shared

system sharing

The Hardhat Framework is divided into several discrete pieces. First, there is the framework itself, which can be shared by multiple applications running on different virtual hosts, or in different subdomains.

Secondly, there is the application, which can be shared amongst different configurations

There is the public area of the application consisting of the index.php module and any images, css and javascript that the browser needs access to.

And finally, there is the database which is specified in the configuration, so it can be shared or discrete at your discretion

System Layout

system parts

Framework

The framework consists of a group of classes organized into a Model View Controller structure. It should reside above the document root and can be shared amongst multiple applications or configurations.

Application

The application consists of the application classes grouped into a Model View Controller structure. Additionally, there is a module level that allows plugins to be used to add functionality to the application. This area is also best located above the document root.

Configuration

The configuration area (frequently contained within the application) consists of the config.ini file with various settings, the commands.xml file, which maps urls to action classes, and the compiled Smarty templates (if you are using Smarty). This areas is also best located above the document root.

Public

This is the code in the document root which is accessible by the web. It contains the index.php module, which starts the whole process off, as well as directories for javascript, css, and images.

Database

The database is optional, although any serious web application will definately have a database. The framework is currently set up to use MySQL only. Everything is isolated in a database layer however, so other databases will be added in the future.