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.

  1. 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/

  2. 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/

  3. 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

  4. 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/

  5. 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:

Share/Save/Bookmark

32 Responses to “5 tips and tools to develop php applications fast”

  1. Bill Smith  on September 10th, 2008

    For managing MySQL databases, SQLyog rocks.

  2. andre  on September 10th, 2008

    Nice one Bill… SQLyog looks really cool.

  3. 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.

  4. 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 !

  5. Stuardo -StR- Rodríguez  on September 10th, 2008

    I agree with everithing but the ORM, I loved Doctine because their documentation

  6. 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.

  7. 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.

  8. 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.

  9. linuxamp  on September 19th, 2008

    Here are mine:

    CodeIgniter
    jQuery
    HeidiSQL
    Notepad++ || PhpED

  10. linuxamp  on September 19th, 2008

    Here are mine:

    CodeIgniter
    jQuery
    HeidiSQL
    Notepad++ || Vim || PhpED

  11. Sandor Nemeth  on October 2nd, 2008

    Here’s mine:

    Zend Framework
    Prototype.js + Script.aculo.us
    Propel/Doctrine
    Navicat
    Zend Studio for eclipse

  12. 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 !!!

  13. 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.

  14. 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.

  15. 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.

  16. 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.

  17. 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

  18. Xray  on January 5th, 2009

    Хм…. В этом блоге хоть комментаторы нормальные А то пишут в комментарии чушь всякую.

  19. jhOy  on February 4th, 2009

    great post! thanks :)

  20. 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.

  21. Mahbub  on April 29th, 2009

    My choice goes

    Codeigniter
    Jquery
    Notepad++, PHPEdit
    mySQL Front/heidi SQL

  22. 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…

  23. matthew  on June 3rd, 2009

    I have used CakePHP in the past, but maybe I will give Zend a try.

  24. 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

  25. 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


Leave a Reply