Scorpio contains a set of base classes that are used to provide some core elements that are used heavily throughout the framework.
The most basic of these is the baseSet object. This is basically an associative array as an object that implements the Countable and ArrayIterator interfaces. The baseSet is used whenever a collection of objects or settings or an array of data is useful. It is extended and implemented throughout the framework and forms the base of many of the other base classes.
Extending from baseSet are several pre-built implementations. The most useful two being:
baseOptionsSet is an options system that can be used in any class that requires configuration options. Using this class allows any object to have a consistent options implementation with the same level of functionality without having to re-code. It is used in many of the Scorpio objects.
baseTableParamSet is an interface to a database table of options in a PrimaryKey, paramName, paramValue format where PrimaryKey is an integer key, paramName is the parameter name and the two together are the unqiue key for the table. paramValue is a string (usually a text field) that holds the value. The class is designed to work with MySQL but is readily adaptable to other databases. It maintains its own modification state and groups parameters for removal during the save method call. This class is used in the WURFL layer.
Finally there is the baseSearchInterface and baseSearch classes. These form the basic components for a search system. baseSearch is a basic implementation of the interface and is a suggested implementation. The idea is that any time a complex search is needed, it can be built around the search interface and then have a consistent interface - regardless of what is produced as the results. Most searches require a start, result size and basic keyword searching (all provided in the baseSearch class). The specifics of the search itself are left to the implementation. A search will always return a baseResultSet object - a set of results (using baseSet at the core). The result set defines a method for getting an actual result object instance. For an example see: wurflSearch and its result set wurflResultSet.