A three-tier architecture was chosen to allow the interface to be changed independently of the application/business logic, and to allow the data storage technology to be changed (database, LDAP etc) without impacting the application/business logic layer.
The Smarty PHP Template Engine will be used to cleanly separate the application logic from the presentation code. Smarty uses place-holder tags which are replaced with live content at run-time.
Note that Smarty version 3 requires PHP version 5.0 or later, however an earlier version Smarty 2 will work on PHP version 4.
The Active Data Objects DataBase ADODB database abstraction library will be used to 'insulate' the application logic from the underlying database server (MySQL). Using this abstraction layer will enable the underlying database technology to be changed from MySQL to some other database (eg FireBird, PostgreSQL, LDAP etc) without requiring a change to the application logic.
Note that PHP version 5.0 or later is required.
These are objects providing functions within the application logic, and may be implemented as methods.
GMS PHP Pages
These are objects providing the core application logic.
Data Access Components
These are objects providing access to underlying database tables, reading values from tables into objects, storing values etc.
Zend PHP Engine
This is the engine on the my.bzflag.org web server which interprets PHP code.