XDOs - eXtensible Data Objects are one of the main features of phpSATk. They provide a unified, abstract interface to properties of manageable objects and are extensible by hierarchically attaching other XDOs to them, forming a collection. Each object is uniquely identified by its type identifier and at least one unique value (index value).
For example you might take an XDO implementing the ‘person’ objectClass (LDAP) and attach a ‘posixAccount’ object and some XDO fetching some data from a database. The attached object might now identify the data to manage using the parent (’person’) object and form a collection of all data about the given user. This is especially useful for the purpose of deletion where now a deletion of a parent object will first delete all child objects and for view generation where the (transparently) attached object now will show up in applications not even knowing about them.
For accessing a set of Data Object Collections DataSets are build. They come in two flavors, either flat (a simple set of objects) or hierarchical (a tree of objects).
At least at the moment the process of creating new XDOs is not implemented in a near-optimal way. You will need to do many iterations of fetching/attaching for building up a deep hierarchy of XDOs.