Posts tagged ORM
I work on all sorts of little personal projects in my spare time, most of which don't ever make it to a release (mainly due to time issues), and recently I've been finding more and more instances where I could do with some kind of object relational mapper (ORM) library to assist me.
In a very small nutshell, an ORM system will allow you to take the relevant parts of a database schema and functionality and map it to classes that you have written to effectively lower the barrier between the database and whatever it is you're writing.
This makes the interface to the database more fluid, and allows for automated building of SQL and other higher order operations to be performed easily, without having to worry too much about the actual mechanics of what is going on between your application and the database.
At work we use our own in house ORM system to achieve what we need to do in this regard, but I can't reasonably expect to use this for everything I do from now on as it is the property of the company I work for. Not only that, but just staying with what you know doesn't really help you improve on what you have, or gain new perspectives on what you're working with.
So, I thought I'd go off to Google, do a bit of searching, and find some ORM examples that I can use to knock together my own ORM library to do the things I need, but then I came across PHP Doctrine...
PHP Doctrine is fairly new and is described by its developers as follows:
"Doctrine is an ORM (object relational mapper) for PHP 5.2.x+ that sits on top of a powerful DBAL (database abstraction layer). One of its key features is the ability to optionally write database queries in an OO (object oriented) SQL-dialect called DQL inspired by Hibernates HQL. This provides developers with a powerful alternative to SQL that maintains a maximum of flexibility without requiring needless code duplication."
This sounded interesting so I decided to have a quick(ish) look through the user manual and got hooked! You can do a tonne of stuff with it, and in some ways its like having a (good) version of a tool like PHPMyAdmin that you can use on a system level - pretty much anything you could want to do in a database they have a map for which is great.
I'm not saying I'd use all the functionality they provide particularly, but a large chunk of it solves all my problems, saves me having to write my own, and being based on PHP 5.2+ I know it's modern, up-to-date and really taking full advantage of what the newer PHP versions have to offer.
If you use or are thinking of using a PHP based ORM solution in your projects, I'd seriously suggest having a look at the manual for PHPDoctrine before you write your own. Like anything, I have to admit that it does also have a couple of niggly bits of functionality that IÂ don't like, but really and truly, the pro's of it seriously out-weigh the cons.
You can read more about PHP Doctrine on its website here: PHPDoctrine