There's definitely a need for a 'great' PHP ORM. I've been rolling my own for a couple of years since I've never been satisfied with what's out there. Here's the kind of syntax/style I use on mine (that class definition is the entire code I need to write to get working abstraction).
class Person extends Model {
const TABLE_NAME = 'people';
const TABLE_KEY = 'id';
}
$person = Model::find("Person", 1234);
$person->name = "James";
$person->save();
$persons_named_james = Model::find("Person", array("name" => "James"));
foreach($persons_named_james as $person) {
print $person->age;
}
$person = new Person();
$person->age = 26;
$person->save();
I should really upgrade to 5.3 so I could write Person::find(1234); instead.