When web applications like basecamp started appearing, a lot of attention started turning to Ruby on Rails. Suddenly small groups of technically driven people could release powerful applications in a month or two. With this awareness, the usability standards for web applications increased and so did the technical challenges for web developers and designers. This movement sort of left php developers in the dust for a while. While CakePHP and other frameworks came to the rescue, it didn’t seem like the php community wanted to match Ruby on Rails. If anything, php has been looking to retain its strong foundations of being built upon a powerful, easy to use library and integrating new “web 2.0″ like ideas to do more than Ruby on Rails.
In this post, I will discuss 5 tips and tools that the php community has provided to speed up development time and improve code quality. These should help you out if you don’t already know them, but if you do I would like to hear what you use to speed up your development time.
- Framework with the Model View Controller (MVC):
This is old news, the MVC pattern is an industry accepted pattern to improve the organization and overall quality of your code. Put your database code in the model layer, visual UI code in the view, and business application logic in the controller. If you don’t know the MVC layer, you really should.
My choice: Zend Framework
Why? Easy to pick and choose what you want to use; strong momentum behind it; good documentation.
- AJAX Frameworks:
Also old news, you should become familiar with a common AJAX framework. Scriptaculous, mootools, jquery, and dojo to name a few… these frameworks can all do similar things and will make your clients go ooh and ahh. Actually, these days AJAX interaction is become standard. Being a Zend developer, I would suggest acquainting yourself with the Dojo framework. It’s probably the largest and most complex of them all but is very powerful.
My choice: Dojo
Why? Zend has adopted it into the zend framework; easy to extend; large resource of reusable widgets to use.
- Integrated Development Environment (IDE):
I won’t go into much detail here, if you’re developing objected oriented code or using a lot of libraries you should get a good IDE. Eclipse PDT is my favourite because it’s free and has some very useful plugins to extend it. My basic requiremnts are resource/file management of libraries, auto completion, basic syntax validation, and basic debugging tools.
My choice: Eclipse PDT
Why? It’s free and provides all the basic features an IDE should have.
- Database Creation/Management Software:
Managing a database schema can become tedious error prone thing to do. If you don’t have a dedicated database team, and in many cases are the web and database developer, then you should be doing more than handling your schema in mysql (or your database of choice). MySql has recently released workbench, a database management software that is really powerful. I prefer DBDesigner 4 right now because it’s simple to use and feeds into propel db well. But I plan on moving over to workbench in the near future as it’s really the continuation of DBDesigner.
My choice: DBDesigner, but not for long.
Why? It’s simple to manage your database schema visually and exports well.
- Object Relational Mapping (ORM):
If you don’t know what this is, it’s basically a way of mapping your database tables to objects. It’s so you don’t have to think about how to connect your logic/business code to the database. Also, if you use tools like Propel DB you don’t have to code this as it generates it all for you. While your application may not perform as well as with straight SQL, you will code faster and you can find ways to tweak bottle neck cases.
My choice: Propel DB
Why? It’s easy to use and integrate into the zend framework; There aren’t many other options.
Wrap Up / Further thoughts
I hope this was useful for you. Everyone has their own combination that works for them, and in a lot of cases the company forces you to use one. Where I work, we can use whatever combination we want and I know there are many. I would like to hear what your setup is like, what IDE, framework, and OS works for you and why?
Comment/Get the links for this post here: