PHP IDE Complaints, i.e. Zend Studio 6 is Crap
Updated: 6/6/09: As of now, I’ve settled on NetBeans as my primary IDE, and Textmate as my secondary. Read below for reasons.
In my line of work, a code editing tool is something that you spend almost all of your day with. There are so many that I keep forgetting what I don’t like about each one, and I return to it six months later thinking it was decent. Here, I’m going to try to outline all of my complaints about each one.
If you’re a developer of any of these, please let me know what I can do to help you fix these problems, or please contact me to explain why I’m failing to see your genius. I’m certain that I’ve been through all of the big ones so if I’m missing one, please let me know.
In general, my must-have features are typically:
- Project support. I’d really prefer to have project files kept outside my project directory. I need to be able to have multiple projects open at once.
- Code Assist – hinting php built-in functions as well as my own.
- A decent copy/paste system. If I double-click the word, highlight the $ too.
- Support for subversion from within the UI. Ability to do all svn commands.
- At least some level of phpdoc auto-generation when I type /**
- Support for generating phpDoc output would be nice, but not critical
- Basic syntax error highlighting as I type.
- Smart closing character writing, smart indenting.
- Find/replace in files.
- A way to compare files against other files, latest from repository, etc
Most of the IDEs below have most of those features, but either make it hard to work with or just plain broken.
Komodo 5
- It’s very clean, relatively fast, supports a fair amount of the above criteria, and has a very easy to navigation preferences pane. It’s also cross-platform and NOT java-based.
- Learning how to use projects was a bit ugly at first, but it’s something I got used to.
- Since projects use references that point to files, it’s hard for me to move/delete/add file directly to the file system through the project pane. I’ve become so used to this that it’s a big pain. What’s more confusing is that the file references look like files on disk, so my natural instinct is to copy them.
- Doesn’t seem to have any way of creating a new project while checking out a subversion repo at the same time.
- Doesn’t have built-in support for phpDoc generation like zend does. It generates the comment structure fine, but it doesn’t fill-in any @ params. Not critical, but a nice time-saver.
- The subversion integration is a bit lacking. I can’t find a way to do a bulk-add of files. Sometimes I’ll add several new files to a project and when it’s time to commit my changes, I can’t recall all of them. Thus, some files are not added because I missed them. I also can’t seem to run a history command on a folder to see all changes to the contents. I seem to be limited to running those commands on individual files.
- I can’t compare against the repository in a side-by-side view. The only way I have of seeing the file differences is a standard diff view from svn. This is fine for me, but for large files and designers helping me, it’s not ideal.
- Syntax highlighting is fair to start out with, but I only have the choice of 70 standard colors. I have a specific set of colors I use, and almost none of them are available.
- Copying portions of text is smarter than in zend, especially php embedded within html. However, it doesn’t seem to complete my quotes and it’s not very smart about where to put a closing function bracket. It always places it on the same line. I would appreciate it if it would place it on the next line, indent it properly, and avoid it completely if one already exists.
Zend Studio 6
I have several complaints about the Eclipse project (built in java) that Zend 6 is built on top of to begin with, but I’ll skip those. Essentially, I feel that it was a poor choice for a professional-level product.
- When designing this tool, Zend didn’t pay attention to the KISS principle. There are about thirty ways to create a project and they’re all clunky. WAY too many.
- A ton of preferences, menu items, etc, are organized into folders despite having only one item inside of it. Navigating the options is a nightmare.
- Preferences editor is horribly confusing.
- I stumped the user forums when I asked how to save a php file to my hard drive, not inside my projects. Just a single file -> save as forces me to save it inside a project. Really?
- Mac has an issue with java-based programs where it can be difficult to tell mac that the program is the default for that extension. Really lame. Another reason java base not so smart.
- To open files, you must do so from within the program and it will not work by clicking on a file externally and expecting the app to open.
- Checking out a project from svn and placing it in the directory I wanted it to be in rather than the default was an unpleasantly lame process.
- My favorite feature in Zend 5 was the command-d duplication of the current line/selection. It seems to be completely gone from 6.
- There doesn’t seem to be way a continue a text search after you’ve closed the search window. In Z5 it was command-G.
- Just discovered a lovely bug that disables code assist entirely when you’ve created a project from a subversion project. That’s really lame.
- Can’t figure out why the equals signs in my html are black. No syntax coloring is set to black as far as I can tell in the entire app. Since my background is a dark color, they vanish. There are also about five different places syntax coloring is set for a single mixed php/html/js file.
- Line numbering and code window background is black like I want. Code folding icon column still white so it’s nice and ugly.
- “Potential” code errors trying to helpful. It warns me that a variable is never used despite the fact that it’s an array that’s being added to a few lines down.
- The weird xml editor window is… weird. Can’t I just edit the text? Call me oldschool I guess. There is a way to edit the xml file in the “text” mode, but to set that as default I can see.
- Weird UI glitches – like random chunks of the editor window going white after a copy/paste. Need to change tabs and back again to fix it.
- It seems to time out randomly when using subversion that has been installed in the default, svnserve way. No way to work or cancel until action times out, sometimes taking six minutes!
- Poorly organized context menu on files. Creating a new test case file seems like it would be in the Debug option, but it’s in the new file option. I can’t rename a file without using the Refactor tool.
They designed zend studio 6 for human use, right?
Zend Studio 5
- Decent tool. A bit outdated now, but it’s still fairly simple to use and it has most of the power that I really like.
- However, it’s not the most recent version and I will not be able to use it forever. It does lack some of the more advanced features it’s new version supports, but it doesn’t have any major flaws that prevent me from using it.
- It does fall victim to the mac editor issue with files not opening properly.
- It’s still a bit large and resource heavy, where as the very similar Komodo is not.
PHP Eclipse
- It’s based on eclipse so it feels like zend studio 6, so it shares almost every problem.
- It doesn’t have the higher level tools I enjoy in zend – phpdoc generation, code galleries, templates, etc.
- Not as easy to install.
- A little too open source for me. No feeling of support or tested stability.
NetBeans PHP IDE
PHP support is very recent for the NetBeans suite but it was decent in 6.5, and is very good in 6.7RC1. NetBeans has almost everything I want – integrated svn, integrated ftp, clean look, easy to use, etc.
Currently, I seem to be seeing some bugs with php code completion for PHP default functions and how the system handles svn:ignore properties, but other than that it’s been working great. And, it’s cross-platform.
They seem to be releasing updates frequently (Zend has not had any updates for over a year) so that’s even more encouraging.
For quick code editing tasks, I’ve been using Textmate. It’s support for bundles and how lightweight it is makes it one amazing tool.
BBedit is too costly for quick code work, but I like how fast it starts up. I don’t like how it handles multiple files – with so many apps using tabs now, the file list on the right is too weird.
Coda is great as well but I’m not satisfied with how it handled svn integration, how long 1.5 takes to start, and general problems with syntax highlighting / code completion. For more css-based work, it’s excellent.
Thanks for reading!