XoopsObject & XoopsObjectHandler
Last updated
Last updated
XOOPS' early data persistence architecture was based on the Data Mapper pattern, with two abstract classes to aid in the class development XoopsObject and XoopsObjectHandler
XoopsObject: abstract class of Data Object
XoopsObjectHandler: Mapper. An abstract class that saves XoopsObject in DB or rebuilds XoopsObject from DB
The idea behind them is that a class can extend XoopsObject to describe an object, whereas extending XoopsObjectHandler will give more like an interface for handling the objects, i.e. get, insert, delete and create objects.
E.g. for a ThisObject
class, you can make a ThisObjectHandler
to get, insert, delete and create ThisObject
objects.
The advantages of extending these two classes are for XoopsObject:
Automatic access (inheritance) to methods, easing the assignment/retrieval of variables
Automatic access to methods for cleaning/sanitizing variables
and for XoopsObjectHandler:
A place to put all those functions working with more than one object i.e. (e.g. a "getAllObjects()" function).
These functions will become easier to track down in the file system (since they are connected to a class, it is just a matter of finding the class and not going through the function files in the module/core/PHP native in search for it.
An additional idea is that the XoopsObjectHandler-extending class should be a Data Access Object, i.e. the class, which handles database calls - and leaving the XoopsObject-extending class to have object-describing methods, such as methods which handle and manipulate variables, calling methods on the handler for retrieving, updating and inserting data in the database.
In XOOPS 2.3 we've added a new enhanced version of the XoopsObjectHandler, the XoopsPersistableObjectHandler, that incorporated features/characteristics from the Repository Pattern