This is where DataObjects can start to grow in complexity. What you're doing here is creating a wrapper for your database, so that each table maps to an class, and has a nice, clean interface. But how do you keep your interface clean and still have access to the fancy functionality of your database?
A simple solution to your example below: you might at an argument to your find() method. function find ($useLike = true) { ... } But you'll quickly come across more complex scenarios, and you will either end up with too many methods or too many arguments for your methods... I've heard Object Relational Mapping described as the "Vietnam" of software development. http://en.wikipedia.org/wiki/Object_Relational_Mapping A more flexible solution is to have a query() method that allows you to supply your own custom SQL. While this removes some of the abstraction, it does give you lots of flexibility. And besides, sometimes it is important to write your own optimized SQL for a particular query. Here's an example: $user = new DataObject('user'); $user->query('SELECT * FROM user WHERE name LIKE '%john%' AND age < 35'); The other possibility is to look into existing DataObject frameworks that have already implemented the fancy stuff for you. I've used PEAR's DB_DataObject. It's a bit of a pain to get up an running, but it's solid. There are quite a few others -- here are a few: http://pear.php.net/package/DB_DataObject/ http://propel.phpdb.org/trac/ and CakePHP implements its own ActiveRecord http://cakephp.org/ -- Dell On Oct 19, 2006, at 12:42 PM, David Mintz wrote: >> $user->insert(); >> >> Here's a good article that covers the basics: >> >> http://www.onlamp.com/pub/a/php/2004/08/05/dataobjects.html >> > > Quite good, thanks. Now, a question about > http://www.onlamp.com/pub/a/php/2004/08/05/dataobjects.html?page=3 > > What if you want to find a record WHERE $object->someProp LIKE 'M > %' (as > opposed to " = ")? > > The first crude thing that comes to mind is, if you want LIKE, say > > $user = 'Jane%' > > and have your find() method look for '%' and do LIKE if it's found. > > Thoughts? _______________________________________________ New York PHP Community Talk Mailing List http://lists.nyphp.org/mailman/listinfo/talk NYPHPCon 2006 Presentations Online http://www.nyphpcon.com Show Your Participation in New York PHP http://www.nyphp.org/show_participation.php