an eddy in the bitstream

Day: June 19, 2009

Get your degree <i>now</i>!

I get literally hundreds of spam messages urging me to buy a higher education degree. I realized today why these kinds of messages must appeal, because I’ve had more than one dream in which I realized I had never graduated from high school or college and was completely unprepared to meet fill in challenge here.

These spam must be aimed at a kind of Jungian-level subconscious anxiety that manifests itself as the Unfinished Degree. Of course, there are plenty of folks who really do have unfinished degrees and are struggling in a competitive marketplace. But even a college-degreed person like myself still localizes my dream-time anxiety about life in not having finished school, and I suspect that is also at play.

The Unfinished Degree… <cue Jaws theme…>

PHP ORMs

Object-relational mappers are a nice way of simplifying data store interactions, by abstracting the data model into a OO class structure. Or put another way, don’t write SQL, write code that is storage agnostic.

 my $thing = Thing->new( id => 123 )->load;
 $thing->foo('bar');
 $thing->save;
 #
 # the above is mock code 
 # representing something like:
 #
 BEGIN TRANSACTION;
 UPDATE table things 
    SET foo = 'bar' 
    WHERE ID = 123;
 END TRANSACTION;

I’ve used a couple of different Perl ORMs over the last four years with great joy: DBIx::Class and (mostly) Rose::DB::Object. Now I’m looking for a suitable PHP project for my toolbelt.

Wikipedia has a good starting list.

Some contenders include:

Xyster
Looks nice but depends on Zend Framework so a bit heavy. Handles cascading actions on related objects.
Doctrine
The most popular (or at least most-mentioned). It has its own special query language (DQL), which is a philosophical turn-off. Isn’t SQL+PHP good enough? But I see the DQL is optional.
Rocks PHP Library
Ambitious. The docs make it seem a little like the Rose framework in its goals: an ORM, a Form manager, a web framework. There’s a DB abstraction layer that claims to support many different db flavors. It seems pretty young though.
Propel
Mature. But it uses this external XML definition file which just seems crazy. Again, isn’t SQL+PHP enough?
DABL
Based on Propel but simpler. No external XML file (+1). Uses same PDO db abstraction layer as Propel.
LightORM
I was initially hopeful about this one but it appears abandoned.
DataMapper
My co-worker turned me on to this one (thanks Sean!). I really like the looks of it so far and will be spending some quality time testing it out.

© 2024 peknet

Theme by Anders NorenUp ↑