I've had about 8 years of object-oriented programming experience, and I think in objects all the time (even when not programming).
Of course, coming from a fairly extensive OO background myself, something I am sure you realize is that even in version 5, OO in PHP remains little more than a kludge.
In addition, because so many people still are on 4, whatever we do with OO must also work in that version, where OO is nothing more than fancy arrays.
So far everytime I've gotten very far into real OO work with PHP I've ended up struggling more in getting PHP to do what it should than I have writing the application itself.
Just something to keep in mind...
Absolutely my primary concern! And something I've been researching, brainstorming on, and whiteboarding in-depth over the past last week. And my answer is fairly simple. Without the reflection capabilities of Java or other OO languages, my object definitions would all have to be external. This is the object taxonomy or tree, which we would provide a manager interface for and a set of core objects (e.g. documents, chunks, snippets, users, etc.). This tree would serve at least four purposes:
1. to give a visual, wizard-based object management interface for all core and user-defined objects
2. to use as a source of reflection on objects -- e.g. if we saved the taxonomy in XML, we could get the properties, methods, rules, relationships, etc. without need internal reflection
3. object generation - we could easily automatically generate PHP class files from the object taxonomy definitions
4. automated persistence - this is based on reflection as well, where all the persistence manager needs is the object definition to manage the data container; we could start out by writing actual class implementations for persistence and eventually abstracting this kind of thing down to where just the object definition could automatically direct all persistence actions based on a set of data container specific classes for dealing with types, relationships, etc.
I know this sounds like a major project, but the more I think about it, the less intense it is appearing in my head, as far as the code required to make it happen. I could be crazy though; my experience with PHP is limited, but I've done all these types of things before in other languages. I don't see specific limitations that would prevent this from working, just unknown challenges as there always are when going from conception to reality. ;-)