PHP - - By J Armando Jeronymo

For many years I used a code editor that is now discontinued by its developers, and the introduction of HTML5 and CSS3 led me to look for an editor that supports the new tags and properties. In this article I’ll share the criteria and process I used to find an editor suitable for making quick fixes and a development environment for large-scale projects.

My initial candidate list contained over 30 popular Linux, Java, Windows and XUL software packages which had at least one stable release after January 1, 2010: Arachnophilia, Bluefish, Bluegriffon, CoffeeCup HTML Editor, Dreamweaver, Eclipse PDT, Emacs, Expression Web, Geany, gedit, HTML-Kit, jEdit, Kate, KDevelop, Komodo Edit, KWrite, Netbeans, Notepad++, Notepad2, OpenBEXI, PHPEdit, PHPEd Pro, PHPStorm, Programmer’s Notepad, PSPad, RadPHP, Scite, SeaMonkey, Vim, WebDev, WebMatrix, and Zend Studio. You can google each program for their specific details.

Round One – Auto-Completion and Syntax Highlighting

My usage of HTML/CSS/PHP/JavaScript development require an editor that is capable of making intelligent suggestions and keeping components visually separated by type.

Suggestions can be made through auto-completion, parameter hints, and auto-closing. Auto-completion is the program’s attempt to guess and offer to complete HTML tags, CSS properties, and PHP and JavaScript class, function, and variable names. Parameter hinting is the ability to inform the developer of possible HTML properties and their values, CSS property values, and PHP and JavaScript function arguments. Auto-closing is the ability to add closing HTML tags, parenthesis, braces, and the like.

Component separation is the coloring of the different types of elements, like tags, functions and variables, on the editor’s screen, often referred to as syntax highlighting. Also helpful is the ability to locate a matching delimiter – parentheses, brackets, and braces – by selecting the opening one or vice-versa.

My first test was to check which of the editors in the original list offer these features out-of-the-box or, at least, with a simple to install module.

I immediately dropped three packages from further investigation: Emacs which required additional files that were difficult to install; OpenBEXI which looks like an interesting concept for web page development but isn’t really a scripting tool; and WebDev which didn’t seem to have a free trial version. I wish I could have tested a very good Mac IDE, Espresso. Their team sent me a lot of useful information and I’d encourage any Mac user to try it out.

For each remaining package I checked their hinting and auto-completion abilities for HTML4/5 tags, CSS properties, PHP and JavaScript functions and variables, and syntax highlighting. The following code, saved as a PHP file, was typical of the tests:

<html>
 <head>
  <style>
dir {
    display: none;
}
  </style>
<script type="text/javascript">
var aaa = 12;
aaa = Math.abs(12);
  </script>
 </head>
<body>
 <div style="display: none"></div>
<?php
$aaa = strtotime();
if (true) {
    $aaa = strftime("%a");
}
?>
 </body>
</html>

Identifying the distinct features specifically (PHP function auto-complete, PHP variable auto-complete, JavaScript function auto-complete, etc.) I had 13 requested features. I computed the scores for both packages and features; it was a YES/NO check, and each YES was worthy of one point added the editor’s total score.

The most prevalent features were syntax highlighting and delimiter localization, and the auto-closing of HTML tags. The least seen ones were auto-completion and argument hinting of JavaScript functions and auto-completion of JavaScript variables. The average score was 4.8 absolute or 38% relative, meaning that the average package had not quite 5 of the 13 features requested. 13 of the 29 packages were above the average.

For further evaluation, I selected the top 25%. That is, the following 8 ranked best with my criteria (listed alphabetically): Dreamweaver, Geany, Komodo Edit, Netbeans, Nusphere PHPEd, PHPStorm, Programmer’s Notepad, and WebMatrix. It’s interesting to note that four of those are free (as in free scotch) and four are paid software, and that four are Windows-only while the other four are cross-platform.

This selection does not imply that these packages are better than the others. It just means that they had more of the requested features than others. If, for instance, code refactoring were a priority for me, the results would have been quite different.

Round Two – Everything Else but the Kitchen Sink

The second battery of tests looked at the following list of features: code snippets/templates, code folding, bookmarks, automatic code-formatting, integrated debugging support, macro support, availability of refactoring tools, project management support, version control support, built-in FTP support, integrated command-line console, plug-in support, support for frameworks, editor customizations, whether the start-up time was acceptable, availability and completeness of documentation, and a few others. Again the focus was on out-of-the-box or click-to-install plug-ins, and it was a YES/NO test with each YES scoring one point. Here’s how it turned out:

  • Dreamweaver – Scored 70%. Possibly the best known web development IDE, it’s a very powerful tool for the website designer though I find its interface a bit cluttered. It had some sort of code folding, but not what I’d expect.
  • Geany – Scored 62%. It’s modular and highly expandable. It has a very light interface, but lacks proper FTP support.
  • Komodo Edit – Scored 54%. A kind of open-source version of Komodo IDE, it was very clean and usable. I found it similar to Geany.
  • Netbeans – Scored 75%. It was very impressive with lots of features but a clean interface. It takes about 13 seconds to start on my box (Dual Core 2GHz Intel, 2G RAM and Oneric Oncelot with Unity) which I gather is somewhat reasonable for such a complex application.
  • Nusphere PHPEd – Scored 67%. A great tool, but with a very cluttered interface. Also, they seem not to like plug-ins very much. I read a forum post where someone asked how to create one and the answer was just “send us your ideas.” This was another NO.
  • PhpStorm – Scored 75%, like NetBeans. In fact, it’s rather what NetBeans would probably look like if it were dedicated to PHP development. It seems to tax the processor a bit more, though.
  • Programmer’s Notepad – Scored 46%. But then again, it’s supposed to be a simple, lean, well performing tool. It lives to its promise. It’s a pity that it’s Windows-only, though.
  • WebMatrix – For sure, as a free website development tool, Web Matrix looks quite impressive. I did not rate it though as it seemed to be concept different from my idea of programmer’s IDE.

My Personal Choice

Although all the ones above are powerful programs for working with PHP code, I was the happiest with Geany and NetBeans. Geany is lighter with less features but is expandable with a growing list of community-maintained plug-ins. NetBeans is powerful but has a steeper learning curve and, though free and open source, is privately maintained. Possibly I’ll be using one or the other depending on the task at hand and after a bit of time settle on using just one.

Anyway, in about three years time I’m sure new IDEs will have come up and some of these here will have ceased development. It’ll be time for another review.

What I Learned Here

This article was painful to write. Checking every program in the list was a tiresome, sometimes infuriating, but nevertheless refreshing experience. It took a lot of research, downloading (including a 800MB wrong one!), and time for checking features. I revisited some packages I worked with years ago and discovered others I had never heard of. And it afforded me an interesting comparison between Linux’s repository system and Window’s installer concept as well as between the sizes and setup complexity that separates free from paid software. My desktop is cluttered with downloaded files and there’s a lot of deletions to do now that it’s all over. But I had the chance to do a planned search for an item I needed, something that I had never done before this way. I take from this experience that a search for a product or service should begin with checking simple but essential qualities in a large set and then looking for refinements in those that pass the first test. I also learned to leave my prejudices aside. I never guessed I’d end up putting NetBeans on my final list.

I never planned to tell anybody what’s the best IDE around. Really it’s a matter of what works best for you. But I hope to have helped some of you to devise a strategy for finding which currently is the one most suited to your needs.

Update Jan 17, 2012
I’d like to thank all readers kind enough to leave a comment here. It’s really rewarding to see that one’s writing is of interest and use to others.

I’d also like to stress that the goal of the article was much more to describe a research-and-decide method than to point out one best IDE, inasmuch as “best” in this case is a highly personal concept which reflects the user’s particular needs and tastes. Furthermore, the absence of any particular IDE from the study should NOT be construed as to mean a negative opinion of it. It simply means that I was not aware of its existence — mea culpa mea maxima culpa! — or that it did not seem to be in active development.

Anyway, readers interested in choosing his or her best IDE should by all means include the packages listed in the article PLUS those the most enthusiastic readers mentioned. With millions of developers all over the world, I’m happy to see that all IDEs and editors have a public of their own. Some religions believe that things have souls. I believe that software, in a way, has one too and it gets great comfort when its users display they care about it.

Happy and productive 2012 to all.

Image via Zurijeta / Shutterstock

Sponsors