2010/10/28
Introducing DumbledORM,
a novelty ORM
I'm proud to release DumbledORM today. It is the product of a late night hack sesh with an idea to build a PHP ORM in less than 100 lines. After it's all said and done I arrived at 200 lines with lots of features. The decision to call it DumbledORM came after realizing there was more casting and magic in it than anything out there. :)
Some examples of what it can do:
# load record with id 13 $user = new User(13); $user->setName('Jason')->save(); # create new record $user = new User(array( 'name' => 'Jason', 'email' => 'a@b.com', )); $user->save(); # find single record User::one(array('name' => 'Jason'))->delete(); # apply object methods to entire set at once PhoneNumber::select('`number` like "607%"') ->setLocation('Ithaca, NY') ->save(); # relations between objects $user->create(new PhoneNumber(array( 'type' => 'home', 'number' => '347-333-4444', )))->save(); # update all user phone numbers matching $type $user->getPhoneNumber('`type` = ?',$type) ->setType($new_type) ->save();Applying model object methods to entire sets of objects, jQuery style, is made possible by this incantation:
final class ResultSet extends ArrayIterator { public function __call($method,$params=array()) { foreach ($this as $obj) { call_user_func_array(array($obj,$method),$params); } return $this; } }So proud. I hope you find it fun and maybe even useful. Although at this point all I can say is that it's passing it's little tests.