Tomorrow I leave for Montreal to attend the PHP Quebec 2006 conference. It promises to be a really good event, with presentations from many prominent community members, including Rasmus.

I myself will be presenting and demonstrating SDO for PHP, and given I have a 90 minute slot, I thought it might be an opportunity to look into some of the theory. To that end I've been doing a bit of "design pattern archaeology" - hunting for design patterns after the fact. Armed with Martin Fowler's, "Patterns of Enterprise Architecture", and with help from other SDO project members, we quickly identified the following four:

Data Transfer Object: An object that carries data between processes in order to reduce the number of method calls

Mapper: An object that sets up a communication between two independent objects.

Unit of Work: Maintains a list of object affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems.

Optimistic Offline Lock: Prevent conflicts between concurrent business transactions by detecting a conflict and rolling back the transaction.

There are others, but there's only so far you can take this kind of activity!

The demos I have show how to use SDO to work with relational and XML data. They include a simple Contacts management application, a noddy Blog/RSS feed, and WSDL generation.

If you're not able to make it to Montreal and are interested in SDO, the docs can be found here, and I'll post the presentation on this blog after the conference.