5 tips and tools to develop php applications fast
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.Resources:
http://framework.zend.com/manual/en/zend.controller.html
http://www.cakephp.org
http://www.symfony-project.org
http://codeigniter.com/ - 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.Resources:
http://en.wikipedia.org/wiki/Ajax_framework
http://www.phpframeworks.com/
http://mootools.net/
http://jquery.com/
http://script.aculo.us/
http://www.prototypejs.org/
http://dojotoolkit.org/ - 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.Resources:
http://www.eclipse.org/pdt/
http://www.zend.com/en/products/studio/
http://www.ibm.com/developerworks/opensource/library/os-php-ide/index.html - 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.Resources:
http://dev.mysql.com/workbench/
http://fabforce.net/dbdesigner4/ - 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.Resources:
http://en.wikipedia.org/wiki/Object-relational_mapping
http://propel.tigris.org/
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:



Bill Smith on September 10th, 2008
For managing MySQL databases, SQLyog rocks.
andre on September 10th, 2008
Nice one Bill… SQLyog looks really cool.
Shayne on September 10th, 2008
Seems like an oversight to omit Prototype from the Javascript Frameworks. You could also consider adding CodeIgniter to your MVC framework list as well.
Killian on September 10th, 2008
Nice article ! That’s my configuration :
- MVC Framework : PureMVC. It’s quite complicated but with training its structure reveals very useful and makes applications better.
- Ajax Framework : Mootools, but I intend to try JQuery, because Mootools seems to be left by the web community.
- IDE : Netbeans. I’ve always been using Netbeans when I was a Java developper, and the PHP version is quite great.
- Database creation software : I don’t have one because I only use UML for conception. But I manage my databases with MySQL Query Browser.
- ORM : Doctrine, because Propel is little by little left by projects like Symfony, and Doctrine is the most complete PHP ORM that I could try. It’s sometimes better than Django ORM !
I’m using these tools in a professional context (powered by Ubuntu
), and I’m very satisfied of my choices. I hope that it could help someone !
Stuardo -StR- Rodríguez on September 10th, 2008
I agree with everithing but the ORM, I loved Doctine because their documentation
andre on September 11th, 2008
I’ll have to check Doctrine out, not sure why I haven’t heard about it more. I do hear a lot about code igniter as well, I’ve just added it to the list along with prototype.
Killian: Sounds like a good combo you have going. I had no idea Netbeas could be used for PHP as well, but then I guess the same could be said for Eclipse.
huynhbathanh on September 11th, 2008
I use!
Framework : CodeIgniter
JS : Mootools, jQuery
MySQl GUI : SQL Yog
Editor : Notepad++
DB Design : Power Designer v12
for Small CMS site I will customize from WordPress or Joomla.
James on September 18th, 2008
Hi, I found your blog on this new directory of WordPress Blogs at blackhatbootcamp.com/listofwordpressblogs. I dont know how your blog came up, must have been a typo, i duno. Anyways, I just clicked it and here I am. Your blog looks good. Have a nice day. James.
linuxamp on September 19th, 2008
Here are mine:
CodeIgniter
jQuery
HeidiSQL
Notepad++ || PhpED
linuxamp on September 19th, 2008
Here are mine:
CodeIgniter
jQuery
HeidiSQL
Notepad++ || Vim || PhpED
Sandor Nemeth on October 2nd, 2008
Here’s mine:
Zend Framework
Prototype.js + Script.aculo.us
Propel/Doctrine
Navicat
Zend Studio for eclipse
Radical on October 3rd, 2008
I’m waiting for the revolution when MVC supremacy will fall.
http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)
MVC is only one of the Architectural patterns over there.
MVC is not the absolute truth !!!
admin on October 3rd, 2008
Radical: What are some good patterns for web design that are practical to use right now?
I like MVC, I find it quite easy to program for and keeps the code very organized. Perhaps it’s not as efficient as coding without it, but it hasn’t affected the application I’ve developed yet.
Frank Ammari on October 6th, 2008
That comes quite close. What about some versioning? I would like to add point no. 6 to your list: SVN or CVS.
But at all this, I still miss some UML stuff.
Anthony Capobianco on October 9th, 2008
FWIW, the Qcodo framework incorporates an MVC framework, ORM codegen engine, and its own functional (albeit basic) javascript control library. Very nifty stuff.
It is, however, a relatively minor framework with a small community, and I think I will be moving to the Spring Java framework for a better long-term outlook. Spring also has its own Eclipse plugin.
@Frank: I agree, version control should be #6 for any large, ongoing project. I currently use SVN with the Eclipse Subclipse plugin.
I haven’t yet found a good & free DBM tool for MySQL, but might have to give Workbench another try. A nice feature would be automated version control & generation of update scripts between versions. I’ve tried the Eclipse DTP, but haven’t gotten very far with it.
And I just have to add that PDT roxx (esp. the about to be released v2)! @Notepad++ users: a /real/ IDE makes a huge difference! Eclipse/PDT is an amazing piece of FOSS, and if you learn your way around it, you’ve got an industrial strength IDE that works on just about any platform with just about any language.
andre on October 9th, 2008
Anthony: QCode sounds really interesting, I’ve been tempted to test it out. What are some pros/cons of it, aside from the fact the community is small?
I should add version control to this list, SVN is what I use and I find it pretty good.
I agree that Eclipse/PDT is awesome. I came from a .NET bacground used to the power of Visual Studio and Eclipse/PDT is really impressive.
Hybris on October 22nd, 2008
My favorite environment / tools:
Framework: Zend Framework
IDE: Zend Studio for Eclipse
AJAX: Dojo, ExtJS
SQL: MySQL Workbench, MySQL Query Browser, Navicat
Versioning: Subversion
Bugtracking/Management: Mantis, Trac
Xray on January 5th, 2009
Хм…. В этом блоге хоть комментаторы нормальные А то пишут в комментарии чушь всякую.
jhOy on February 4th, 2009
great post! thanks
deyon on March 10th, 2009
I used Eclipse and find is to be bulky, netBeans offers the same features but just feels lighter and faster. jQuery cause its easy as I am a designer now venturing over into the developers world, as for frameworks I have been playing with Yii. Pretty new and raw, meaning not not at much features as ZEND, but very fast.
-NetBeans
-jQuery
-Yii
This was a good post, hope to see more.
Mahbub on April 29th, 2009
My choice goes
Codeigniter
Jquery
Notepad++, PHPEdit
mySQL Front/heidi SQL
k00pa on June 2nd, 2009
Great article!
I like to use bash/vim to write code and phpMyAdmin for designing databases.
I have never really liked the mvc stuff… But I think I should try it…
matthew on June 3rd, 2009
I have used CakePHP in the past, but maybe I will give Zend a try.
Hari on November 1st, 2009
I like Zend and I agree that Zend has very high momentum. Symfony is another alternative which provides more of a Rails like experience.
I have used both Doctrine and Propel. I do not agree that Propel is a good choice – it is so terse – Doctrine is way better. Above that integrating Doctrine to Zend is very easy – I have done that.
Dojo has become a big huge Javascript library. I would choose JQuery with JQuery UI or JQuery Tools. JQuery has a lot of cool plugins. In past I have used Dojo, Mootools and Scriptaculous… Once you use JQuery, you can never think of using any other AJAX framework.
I was an eclipse fan till recently but I believe Eclipse has dropped the ball – the IDE became too slow that it is impossible to run it in older machines. I recently switched to Netbeans – much better but I agree the PHP support not that great.
Hari Gangadharan
Andre Liem on November 2nd, 2009
Hi Hari,
Thank you for your great response. I’m hoping to use Doctrine, Jquery and Netbeans in the near future as I agree, they have a lot of advantages over Propel, Dojo and Eclipse.
My only problem with Netbeans is that it automatically updated my SVN files which doesn’t work with my current development environment.
Cheers,
Andre
yusuf on August 14th, 2010
I agree, version control should be #6 for any large, ongoing project. I currently use SVN with the Eclipse Subclipse plugin.Next Google PageRank Update