When and where to determine the ID of an entity

It always amazes me when I randomly come across an article or a blog post precisely on the subject that I’m mulling over in my head – all without searching specifically for the solution or even researching the problem domain.  It’s almost like the universe knows what I’m thinking and sends help my way.

When and where to determine the ID of an entity” is an example of exactly that.  Lately, I’ve been working with events in CakePHP a lot.  And for one particular scenario, I was considering the beforeSave() event in the model layer, which would trigger some functionality that modifies data in other models.  So, having a reference of the current ID would be useful for debugging and logging purposes.  But since the current entity hasn’t been saved it, the ID is not there.   And that’s where I started thinking about this whole thing and considering where is the right place to generate the ID.

One thing that kind of bothered me on top of the theoretical discussion, was the practical implementation, especially in different frameworks.  If I remember correctly, the earlier version of CakePHP framwork, used the presence or absense of the ID in the entity to differentiate between insert and update operations.  It might still be true now, but at least there is a way to work around it, as CakePHP now has isNew() method to check if the entity needs to be inserted or updated.

 

11 Best Programming Fonts

It’s that time of the year once again, when you should take a five minute break from whatever it is you are doing.  Here are “11 Best Programming Fonts” that might help you out in being a little bit more productive.  If not that, than at least bring you a slight change and some eye candy, when staring at your code.

For me personally, Source Code Pro by Adobe (featured in the screenshot above) is still the best option.  I have it setup in the Terminator as Source Code Pro Semibold at size 11, which makes it large enough to work with the code comfortably and small enough to eat too much screen space.

If you want to find and compare more fonts, have a look at these two resources:

 

commandlinefu – a place to share and gather command line wisdom

commandlinefu is a place to learn and share your knowledge about command line tools and techniques.  It has thousands of tips, tricks, and handy shortcuts, covering a wide range of tools from shells and editors to version control and remote access.

pvm – PHP Process virtual machine for building and executing workflows

At some point last year I wrote the blog post titled “Getting started with workflows in PHP“.  I received quite a bit of feedback about it, but, unfortunately, the priorities at work shifted and I haven’t done much more with workflows since than.

The world, however, hasn’t stopped.  The tools and libraries that existed a year ago are still around and they got a lot better.  Additionally, there are a few new tools that help with workflows, state machines, and the like.

Today I came across a really useful and easy to use tool for building and executing workflows in PHP – pvm, aka PHP Process Virtual Machine.  It’s built and released as Open Source software under MIT license by the excellent guys at Forma-Pro.   If you are still looking for a tool to build and execute workflows, I strongly suggest you give PVM a try.  Given how complex the nature of the problem, this tool is probably the easiest to get started with.