The Harmoni PHP Application Framework
Welcome to the Harmoni Application Framework wiki. The Harmoni Project is an effort led by the Curricular Technologies group at Middlebury College to build an application framework and standards-based infrastructure bus to support the rapid development and easy maintenance of curricular it projects. The project is built entirely using PHP's OOP (Object Oriented Programming) model, allowing the framework code to be easily extended and enhanced. All Harmoni code is documented with PHPDoc inline comments and explained in the Manual.
The O.K.I. OSIDs
At the core of the Harmoni Application Framework is an implementation of The Open Knowledge Initiative's (O.K.I) Open Service Interface Definitions (OSIDs). The OSIDs are a standard service-oriented API that defines a broad set of services that are germane to IT projects in the education field yet also fitting for broader uses. Among the services defined in the OSIDs are the following:
While Harmoni is a modular framework of which most any component can be used in a stand-alone way, the built-in OSID implementation provides a core of services that will serve most applications' needs for user-management and authorization, with the Repository providing many data storage and retrieval needs.
The PHP bindings to the O.K.I. OSIDs are maintained by Harmoni project leader, Adam Franco. Please also see the PHP OKI Community part of this wiki for more information on projects, techniques, and developments in using O.K.I. in PHP.
Other Harmoni Services
While the OSIDs are the primary APIs that most applications will use, Harmoni includes a number of additional services that are used in the OSID implementations and may also be used by applications.
- Database Manager - Provides an Object-Oriented API for building and running secure SQL queries.
- Sets - A simple service for maintaining persistent ordered 'sets' of Ids.
- Tagging - Provides an API for social bookmarking and folksonomies of any item with a unique id.
- Image Processor - A simple API that provides access to various underlying libraries for image resizing and thumbnail generation.
- GUI - An optional XHTML layout and theming system.
- DataManager - A data-storage system that underlies the Repository implementation
- StorageHandler - A legacy file-storage system that is deprecated and scheduled for removal.
The Harmoni Application Architecture
Sitting alongside of the Harmoni services is the "Harmoni Architecture". The "architecture" is a set of controllers and templates that coordinate configuration of services, the proper execution of application actions, and any post-processing of application output. The architecture is built on a popular module/action model, in which your PHP program contains multiple modules, each of which contain multiple executable actions. All you, as an application developer, need to write are the action files, not the controller logic.