OOX stands for Object Oriented eXperience. It's an helper module providing pieces of Object Oriented API I needed at a time for some projects.

The main feature of this module is a generic object registry handling. This registry is based on descriptive array's provided by modules' custom implementations.

Also provides an application-level locking framework.

This module was originally designed for the Bricks module (Drag'n'Drop redactional helper) that never has been released so far.

Provided API

Right now pieces of API are:

  • Oox_Registry: Basically, we could compare it to a simpler and not full-featured version of CTools module plugin system. Modules can register named component types, then any other modules can provide their own implementations.
    The Registry system is provided with form element for easy form building and object selection as well as a property based object filtering for registry objects fetching.
  • Oox_Lock: A fully-featured application-level locking framework. This allows clearing locks by tags lock at user or session level.

Additional API

Additional bits of API are provided by submodules that can be used indenpendently:

  • Configuration and export API: This provide a Zend_Config like API, almost the same with some benefits, such as a core variable-like management OO API and some testing pages.
    This piece of API can also act as a mapping layer for exportable objects (and anything else) for import/export easy implementation. It actually provide some source-independent readers and writers.
  • Form helper API: Provide some OO helpers for encapsulating forms into form builder objects that can be dynamically used pretty much everywhere. This was designed so that strongly OO oriented objects could provide their own forms dynamically.

Module status

Some of the features are not really used anywhere, such as the configuration system. It exists because I wanted to make code samples for the Build Systems & Change Management group.

This module is constantly changing, API is absolutely not stable. Because no production modules or sites use it, and because this is also a testing and entertainment product for myself. If anyone intends to use it, I'd be pleased to stabilize it.

Project Information

Downloads