Skip to Content (c) Skip to Navigation (n) Skip to Search (s)

1.0-beta (rev 75) released!

xPDO is in beta. There are several API improvements, more code reductions and simplifications, and the introduction of SQLite and PostgreSQL driver support are coming very soon. xPDO is being used to develop the next-generation MODx CMF.

Forgotten credits...

I'd like to extend a special thanks to Andrea Giammarchi for his PDO for PHP 4 implementation that inspired me to begin coding this project. If not for PHPClasses.org and the inspiration I found in Andrea's work there, the OpenExpedio project would likely not exist, as I probably would have invested my time in working with PHPDoctrine.

About the OpenExpedio Project

OpenExpedio is our name for open eXtensions to PDO. It's a light-weight ORB (object-relational bridge) library that works on PHP 4 and 5, and takes advantage of the newly adopted standard for database persistence in PHP 5.1+, PDO. It implements the very simple, but effective Active Record pattern for data access.

But OpenExpedio is a little more than a simple pattern implementation. It's a PDO implementation for PHP 4 and 5.0.x (where native PDO extensions are not available), a way to abstract business objects from the actual SQL queries and prepared statements used to access a relational database structure representing them, and a way to easily describe and provide optimized implementations of an object model for multiple target database platforms.

Object/Relational Persistence Framework

OpenExpedio is not a query abstraction tool, so the generated classes and maps are targeted at a specific platform to get you started. You just add your own methods and SQL to the generated classes to implement your application-specific business logic. XPDO was inspired by the need to provide an object-oriented API for a web application that is easy to develop with and maintain, and could be optimized as much as possible for the database platform it was being deployed on. And it needed to provide this with as small a code footprint as possible. For this reason, it specifically avoids the approaches of parsing and/or generating platform agnostic SQL that often doesn't take advantage of important performance-related features on each platform, or of relying on proprietary query expression languages that often generate unoptimized SQL in favor of supporting more platforms.

What is an ORB?

I refer to xPDO as an Object Relational Bridge, or ORB for short, because I like it better than the more popular ORM acronym, which stands for Object/Relational Mapping, and the more concise OPF, or Object Persistence Framework, just doesn't sound as good as ORB does. It has been adopted previously by several other projects including the Apache OJB project for J2EE, and now Modeling for Python (inspired by NeXT Software Inc.'s Enterprise Object Framework).