Posts tagged development
Warning: Creating default object from empty value in /sites/vhosts/coderchris.com/public_html/wp-includes/comment-template.php on line 808
Posted using ShareThis
Firstly, as you can see this is my first post made as a direct result of using the ShareThis bookmarklet, which is pretty neat as it actually worked
Secondly and more importantly, I wanted to flag this up on my blog as it's something that quite often gets missed in PHP which is actually a very powerful tool.
As the author of the post above mentions, array_map() can be a useful function when sanitizing user data, but it has so many more uses too when dealing with the transformation of a data-set.
Basically a call such as $new_data = array_map('process_data', $old_data); will allow you to transform each element in the $old_data array to a new element in the $new_data array via the function called process_data.
What's more you can manipulate multiple data-sets in this way too by specifying multiple arrays, so long as process_data() can take in the arguments.
For example lets say we have process_data($item1, $item2, $item3) which manipulates $item1, $item2, $item3 to produce a single result.
If we need to perform this calculation on a bulk set of data we can do
$new_data = array_map('process_data', $array_of_item1, $array_of_item2, $array_of_item3);
I still see people performing these transformations, calculations, whatever, using for, foreach and while loops which can be prone to failure under certain conditions, and are probably less efficient code than simply making this call.
So why don't more people use it?Â I don't know, but maybe this post will help raise awareness!
refactormycode.com is a fledgling website setup as a project by French CanadianÂ Ruby Developer Marc-AndrÃ© Cournoyer and basically it's like a coding forum without the usual forum junk, style and obfuscation of content (forums for me are always a pain to use because of the tiers of information you have to go through).
It's a great looking website covering all the current major programming languages (at least when thinking of the web) and the idea behind it, though simple, seems to work really well.
Basically, you have some code that works, but you want to make it better, more efficient, or just tidier. So, you post your code sample and other people suggest changes. It's kind of like yahoo answers for developers or the comments foot of the PHP manual.
The code to be refactored, so far in the PHP section at least, has been of a reasonable standard i.e. that of at least intermediate developers, which is great as these services can tend to get flooded by newbies who don't know their $i++ from their ++$i :p and rapidly lose interest for me.
So far there are only a few PHP samples on there to comment on but I think, as the site begins to grow, there will be a wealth of well developed and critiqued code that serves as good examples or directly useable functionality.
So far I can't really fault it, other than making the "Best" link clearer by calling it "Best Refactorors"Â or something similar, and providing some closed, or accepted answer(s) type functionality to stop a thread getting out of hand (it could be that this exists already but I just haven't seen it yet). Maybe even an option to download each refactoring as a plain text file could be useful.
So, to round up, as you can probably tell, I love this site and you can see my standing in the community in the foot of this page! Keep up the great work Marc and I hope your site develops in the way it deserves and gets the recognition it should!
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