Software
10 things a PHP IDE has to have
PHP IDE

There are so many PHP IDE's out today and it is very hard to choose between them. In my investigations I have found that though there are many they all fall short when it comes to the basic needs of a PHP developer. Before I continue and review some of those PHP IDE's here is a list of 10 things a PHP coding program has to have. Well, okay so the list should be more than 10 but not much more.
The IDE's will be judged strictly on the ten points. This makes things fair and easy. It also keeps evangelism out of the comparison. I have noticed that PHP developers tend to get very talkative about how good some IDE's are based on the brand name or some other "cool" functions which are totally useless for the general audience of users.
- One-click project creation by choosing a directory with. Too many PHP IDE's have multi-step project creation. Some even have strange functions where you have to add files to the project and delete them. Adding and deleting a file from a project should be as easy as going to the file system and moving or removing the file. I don't want to delete a file from a project and find it hanging out in the project folder later. Some might think this is cool, but it is not.
- Local filesystem viewer that shows the filesystem tree without having to enter a drive letter. If I cannot see the file system from the IDE it's uninstall and delete followed by some violent thoughts directed at the software maker.
- A PHP debugger that works out of the box with a local webserver. No PHP IDE has this yet. I consider it the holy grail of the PHP software world. No matter how much support software manufactures offer it never covers this aspect of using an IDE enough. Frequently the only reason for purchasing or using an IDE rather than a text editor is to get debugging features.
- A HTML toolbar. Why do PHP IDE makers think PHP developers want to type out and can remember all HTML? After all they are buying or downloading the IDE to ease the task of having to type things character by character. CSS is also much more important nowadays as is javascript, they should be included.
- Price is in second place after debugging. When you think about it you might see that the top commercial IDE makers are probably guilty of price fixing. Why they think that PHP developers will pay $300 for their software is beyond me. I myself would not pay that kind of money for a Java program that is buggy and runs slow as molasses. You want three hundred bucks? Give me everything on this list in a blinding fast program written in C , Delphi or Visual Basic.
- Drag and Drop text that does not bug out when used. All PHP IDE's seem to have this in common. Using drag and drop or marking long rows of text cause jumping, jitter and the disappearance of the pointer. Some even scroll to a "home" area on the screen when too much text is marked.
- Fast start times. Okay, let's skip the slow Java debate and go straight to the core. I want my 2.5gz processor to start the IDE in the same time that it can start Word or Open Office. Waiting a minute is ridiculous. Again here commercial vendors may want to take note. If the program costs more than $300, I deduct $10 from the retail price for each second that it takes to start the program.
- File backups on save and timed backups of working files. I cannot stress how important this is. Without backups the program becomes a danger to use. I always find myself making several copies of files as I work to give me a stepping back or history capability. I would be nice if an IDE had a savable history or versioning capability. But plain backup is a must.
- A TO DO list function. It should be simple with a title and text body. The list should appear per project. I get tired of seeing TO DO lists functions that require that I do more than just jot down the thought in my head.
- Intellisense. This is a must. But also one has to wonder why regular HTML is never included in intellisense. Intellisense I feel is being used as an excuse for not including the other things need to produce a proper PHP application
A good PHP IDE should allow the developer to produce a complete application without opening another program to do HTML, CSS or javascript tasks. Many of the items mentioned in the list have been part of text editors for years but seem to go missing in PHP IDE software. This is strange since the functionality is probably part of the IDE that the programmer is using to create the software. You would think they would add in the features that they enjoy when creating a new program.
Somethings that are nice perks but I hate to see good programming time go to when the above list is not complete.
- cvs
- ftp
- diff
- patch
- support for other programming laguages like Perl or Ruby
- addons or modules propietory to open source php applications.
Nice write up. I look forward to reading some of the reviews.
Zend Studio is the complete package. It is very easy to use(it reminds me of Microsoft’s Visual Studio, but for PHP). It has HTML capabilities. The only thing that is bad is that it is written in Java and it is slow when it starts up. It takes 3-5 seconds.
Zend Studio looses points on items 3,4,5,7,8. I am now testing version 5. Even after defragmenting and optimizing windows as much as possible it takes 20 seconds to start. The PC is 2.5ghz cpu with 756mb of ram running windows 2000 pro.
You might try EngineSite editor also. Cheaper and work better I think.
I have just downloaded Enginsite for PHP and was impressed by it. But then I tried working with it and it has some quirks that I consider bugs.
Check out NuSphere PhpED - http://www.nusphere.com. 4.5 is really, really fast, all bells and whistles are there too. Comes at $299 - was totaly worth it for me, they are native windoz and I hate Java UI.
The absolutely only IDE I have come across that comes close to what you are wanting. I have used Zend studio (3.2 through 5.X) and each revision sucks worse than the last. I have used PSPad, which is not an IDE, and it is OK, but it is really a glorified text editor. But Eclipse has absolutely kicked butt for me in recent months. And it is free. And comes with some pretty good features. In my opinion. But above all, I would totally not recommend Zend Studio to anybody anymore. Not as long as Eclipse is available.
http://www.ultraedit.com/index.php?name=Content&pid=150
It has most of what you listed and it is fast. :D
Code completion works fine with php built-in functions, but how can I get more detailed description? In php eclipse hovering mouse over php function would bring up detailed description.
This IDE is quite nice to use no doubt, but lacks true intellisense. It seems to me that alot of people who review these PHP editors / advise others to use product x or product y must be using php purely for scripting purposes.
It seems rather evident that creating OO based web applications is not very common amongst reviewers in general. I say this because the only IDE that even comes close to useful for large scale, OO based, web applications is Zend Studio. Nothing else evens come close.
When you create any piece of software, including medium to large scale web apps, you create upwards of 100+ classes which is essentially the guts of your entire app. That being said, you practically create your own library of classes that perform all the funtionatlity and get created from small php files!
For instance:
< ?
include(...);
$page = new Page();
$page->display();
etc, etc.
?>
Now any GOOD IDE would bascially require you to type
$page = new [a list of all your classes should drop down!!!!]
$page->[a list of all the public functions, etc should drop down from class Page only!!!, not every single class youve created as per php-eclipse]
this type of functionality is ESSENTIAL! it is not good enough to just auto complete php functions from thbe language itself or as PHP eclipse seems to do, show every single function from every single class. A good IDE also needs to give you a list of classes you have created when typing $a = new …
When you have a library of 200+ classes it is impossible for you to be expected to rememebr every single function / class name or even for you to need to type it out. It is beyond annoying and defeats the whole purpose of having a IDE if you need to browse through a list of classes, open the class you want to use to find the function name you need to call.
Sorry but for large scale developement of OO based webapplications, nothing else even comes close to zend that handles the above functionality i have outlined with ease. And so it should yells our Visual Studios and every other good IDE in history.
As far as debugging is concerned, alot of IDE’s i have tested (cant think of a PHP IDE that I have not) have similar debugging capabilities. Once again Zend handles this perfectly fine and in many cases it is almost impossible to use the debugging capabilities of any IDE due to the stateless nature of the web / AJAX.
I highly recommend Zend for anyone that demands an IDE to make life easier from an OO / large scale dev point of view. For small scripting purposes, or adding a bit of database functiontliy to website, I dont think it much matters what you use!
If php eclipse just had this functionality I would seruiosuly consider upgrading. Zend can be sluggish but really with a average dev computer of today (p4, 3Ghz, 1-2Gb ram, windows vista) you hardly notice it.
The IDE i was refering to in my above comments titled “The Ide is quite nice to..” at the beginning of my comments was PHP Eclipse. The title seemd to have vanished after editing, my apologies for any confusion.
I have not tried PHPeclispe yet. Right now we are using PHPed as a standard editor. But I am already not liking it because the pages will not parse if they are not a part of a project.
PHPed is the only thing i could use apart from Zend. It has the functionality outlined in my first post about true intellisense, though I feel Zends is faster and more comprehensive. Zend also tends auto complete html in php files, etc, though Zend lacks auto complete for css which is something they really need to implement.
Dare I no IDE for php i have used has auto complete for the javascript DOM model when coding with JS. PHPed is probably the closest to Zend i can find, and on my PC they both run as fast as each other. If version 5 PHPed is a decent improvement then Zend will probably be relegated to my second IDE of choice.
The biggest problem with PHPed is (as you pointed out) the annoying project configuration, where by all existing projects have to be re-created and each folder, re-created (at least I couldnt work out a quicker way to add a new project).
One other big minus to phped, is the lack of code folding (very useful when going through classes), there are a number of smaller features that i would also say phped lacks relative to zend.
Notepad2 and your own webserver, not XAMPP. Make your own, add php and sql yourself.
VS.php It has intelligent autocompletion of your classes and functions in addition to the built in stuff.
Great article and excellent points.
Well, here it is about two years after the article was written and I have to say that the quality of php ide’s is still pretty poor. I just spent a very frustrating couple of weeks installing lots of different ide’s from lot’s of different companies. Although I had been using a tolerable (free) editor (with a non-functioning debugger), my project got so large that I *had* to have a decent debugger. And it is terrible that the current state of php debugging is still so bad.
The bottom line for me was that NuSphere has a pretty good debugger, to the extent that I tested it, their debugger appeared to be better than anyone else’s. But I did not like their editor design, those pop out side panels drove me nuts, it felt like my screen was booby-trapped and I constantly had to be careful of where I put my mouse; also it’s totally PHP centric, no JavaScript support. Their code obfusticator is a pretty neat feature. I may yet end up buying a copy of NuSphere, but I do heavy JavaScript development and their editor just did not satisfy my needs. And besides that it also happens to be the most expensive one out there.
After looking at quite a few ide’s I ended up choosing RapidPHP/WeBuilder as the best all-around solution, it’s an outstanding editor with a tolerable debugger.
I think you will find that RapidPHP scores pretty high on most of the things that are on that list (their approach to project management takes some getting used to, but it works okay). It is not perfect, none of them are. But it does have some very responsive developers and an active community. Over-all, I strongly preferred their editor to any other, it has good multi-language support and very smart intellisense including html. And at $60 (USA) it also happens to be cheaper than any of the others (except the free ones). see http://www.blumentals.net
For source code control, I tried quite a few including the majors, and ended up using http://www.bazaar-vcs.org it has some very innovative technology. Has excellent handling for binary files and renames. The only downside is that because their network model is so different (and flexible) that it took quite awhile of reading the docs to figure out how best to use it. But if you are willing to invest the time, it is an outstanding approach.
Even though RapidPHP will do it if you really want it, I think that it is a very bad idea to save 10 zillion backups of your files in the same folder as this article suggests. What you end up with at the end is a huge clean-up headache. Far better to use a version control system and do a quick “commit”. Even though RapidPHP does not have built-in support for source code control like some of the others do, it’s not a problem because it does have support for adding your own commands to run other programs, and those commands show up on a menu. Besides, all the ones I looked at with built-in support only had support for one specific version control system, and it was usually cvs — which I won’t use for quite a few really good reasons. With RapidPHP plus Bazaar, you could create a menu item that all you do is click on it and your project is automatically updated in the version control system — result equals archived files with history tracking and no clutter.
So there you go, after a couple of weeks of effort of evaluating different ide’s and vcs’s. YMMV but what I came up with are:
RapidPHP / WeBuilder http://www.blumentals.net
and bazaar vcs http://www.bazaar-vcs.org
I also like http://www.winmerge.org for quick visual comparisions of files and branches.
After learning that RapidPHP could not do remote debugging of my Linux/Apache server, I chose http://www.wampserver.com as an easy way to install apache on windows. I rejected XAMPP for the same reason you did, it’s a kitchen sink approach that tries to turn your computer into a full blown ftp and web server with all the complexity and overhead that entails, when all that you really want/need is a minimal system for development and testing purposes.
One thing though, after you install WAMP, you need to downgrade the version of php (same thing applies to XAMPP). This is because of some as yet unfixed bugs in the windows version of php 5.2.5. Just replace the version that comes with WAMP, with the version available from RapidPHP. This one piece of advice will save you many hours of frustration.
– codeslinger (compsalot.com)
1) One-click Debugging. There should be an easy way to setup the project to, upload only the files you changed to a webserver (local or otherwise), hit debug, and test out that change you just made with one click. This is the biggest single speed-up an IDE can give to a programmer. The build process should be flexible enough to customize (Phing, Ant, shell scripts, FTP scripting, batch, etc).
2) Version Control plugins. Not having version control integration is primitive, and forcing users to stick to only one package is fascist. There should be support for a variety of version control systems out there (CVS, Svn, Clearcase) which are integrated with sensible defaults (check-out files on edit, update sandbox on opening project), which can be easily extensible.
3) Extension support. Give support to Smarty, CSS, HTML/XML, Javascript, PEAR, and PECL.
“#8… I always find myself making several copies of files as I work to give me a stepping back or history capability. ”
You want to tell me you are not using version control for this?
I just stumpled upon phpDesigner 2008 at http://www.mpsoftware.dk and this IDE for PHP and other webtechnologies seems to cover all the things an IDE for PHP must have!
It is fast, easy to learn and most important of all it support working with oop in php!! And yes, it covers the entire 10-list in the article!
phpDesigner 2008 is a “must” have web tool for every webdeveloper out there - I am very happy about it!!
/Sean
Did I forgot to mention that there is also full debug support in phpDesigner 2008 too? Yes there is! :)
My advice as a professional developer is: Just try it you won’t be disappointed! :)
My choice is Codelobster PHP Edition
It is free PHP IDE with Drupal, Joomla, WordPress and Smarty plug-ins available.