When I first heard of Zend Studio, I thought, what's the point in that? There are plenty of (free) PHP IDEs available. What's so special about this one? However, when I got down to looking at it properly, I found that Zend was indeed very different to others.
For one thing, it's not really just one package, it's two, aptly named, Zend Studio Client and Zend Studio Server. The client part is an excellent, easy-to-use IDE, with integrated debugger, which really helps speed up development times, whereas the server has even more surprises waiting for you: as well as the debug server which integrates with the IDE so you can remotely debug your PHP applications, it includes the Zend Server Centre which will help you get the most out of your PHP configuration. In other words, it's a web-based front end to your php.ini file. The server part of the pack includes the Zend Optimizer which inspects and assists in speeding up your code. Finally, (and pretty much to be expected), it includes a copy of Apache and PHP, which can both be installed if not already present. If they ARE already there, then Studio will integrate with them seamlessly.

Installing Zend Studio

Ok, ok, this might sound really patronising, but this part needs serious consideration. Everyone knows how to install software but it's really worth thinking about before you jump right in. Like any new bit of software, it took me a couple of attempts to get it just how I wanted. There are a couple of ways that you can have your system set up:
1. You can have the whole caboodle installed on your PC, including a localcopy of PHP and web server (if you don't already have one, Zend gives youthe option to install Apache). This situation is ideal for lone programmers who don't need to share work loads.
2. Or, you can install the client portion on your PC and the server portion on a server. This is more suited for companies or people who work in teams on their PHP projects.
There are both *nix versions and Windows version of the suite, so you can use either type of OS for the server and the client.

Zend Information Centre

If (unlike me) you are the type of person who treats manuals with contempt and dives straight into games or software without so much as an acknowledgement of documentation, then just for once try to break out of this habit and get to know the Information Centre that comes with Studio. It contains information about all sections of the Studio, with an overview, details of useful techniques for use within the IDE as well as the Server Centre (which I'll come onto in a bit). Ok, so it's a glorified .chm (or man if you're more used to *nix systems), but an incredibly useful one at that.

Zend Server Centre

Ever wondered what all those settings in your php.ini file meant? Well take a look at the Zend Server Center and you'll see exactly what they are. Not only does this package explain what each little line does, it also allows you to configure your PHP settings online, which means no more messing around with notepad (or your local equivalent).

Zend Development Environment (ZDE)

The first thing that I thought of when I opened ZDE for the first time is that it's a lot like Visual C++ from a little-known software company from Seattle. If you've ever used C++, then you'll be prefectly at home with the layout and probably the package in general. It's not as daunting as it looks.

File Management

One of the most useful tasks that any development software can perform (although for some reason, some don't) is the organisation of files into projects, and ZDE does it very nicely indeed. It's very easy to create projects and even easier to add files to them. One of the best features that I discovered was that you can add directories on FTP servers to projects and open and save the files as if they were on a local drive. Incredibly useful when you aren't on the same network and can't use Samba or Windows networking to map a drive from your server.
When adding files to the project, whether from a local drive or an FTP server, ZDE searches the added files for required tags in the lines of code. If one is found, a box is displayed with details of the line number and file path and name of the file doing the calling as well as the include statement of the file being called. To add the include file to the current project is as easy as double clicking on the right line. Could it be any simpler?
Whilst on the subject of file management, Studio has built in cvs (if you don't know what that is, think open source version of SourceSafe (again by that small software company in Seattle)). With this, you can perform all the commands that you would probably want (well, maybe). Very useful when developing SourceForge projects (the only major use of cvs that I could think of).

Code Completion

I know that a lot of people say that you're never a true coder if you use anything that has code completion, but it is stil incredibly useful for someone that spends all their time developing, and Zend acomplishes this task very well. When you start typing a word in, if the word is (for example) a built in function, then it gives that name, the number of
parameters needed and also the variable type of those parameters. The same sort of thing happens with PHP's predefined variables. However, it doesn't just stop at the predefined functions and variables. No, if you have any functions in either the same script or and included file, then Studio will recognise these and process them the same way it does built in ones. It will also pick out user-defined variables and use a pop-up box if
it recognises a variable and then you can either click on the box or just hit enter. ZDE also completes HTML, as do most IDEs, but not only that, it will also recognise if (for some reason) you use the ASP "<% %>" tags.

Classes

One of the features of PHP that not everyone knows about, and probably even less use, is its Object Orientation features. And with the forthcoming v5 of PHP (which, by the way, this version of Zend Studio supports) these functions will become ever more popular. ZDE makes it very easier to see what's going on in your (or other people's) classes, with
its in-built Project and File Inspectors. The Project Inspector allows the user to view the classes and members that have been declared in every file in your project.
Each class and member is displayed using collapsible trees, which makes it very easy to navigate the said classes. To make it even easier to read, icons are displayed next to each item to indicate whether the item is a class, member variable or member function. The File Inspector is very similar, except that it only searches through the active file. So, when you change the file using the tabs underneath the main coding screen, the file inspector will become updated accordingly. This inspector uses the same tree formation to display the classes, but also displayes included files.
The code completion also applies to classes and methods within classes.

Debugging and Testing

This has to be the most useful tool that ZDE provides: the ability to run your code and view the output through a browser. It is an incredibly simple task to perform. All you need do is click one button and ZDE will run the entire script, alerting you to any errors and then outputting the results to the output window, which can then be made to run the resulting HTML in a browser.
As well as running the entire script through from start to finish, you can also set breakpoints, which are points in the script where you want the debugger to stop and wait for you to continue. This makes debugging much simpler since it allows you to watch the variables as they change and see the HTML output develop.
When debugging, you can either perform it on the PC you use to write the code (using the copy of PHP and Apache that Studio will install for you) or you can configure it to use a different computer altogether (as long as that computer has Zend Server installed on it).

Further Features

Smart bracket matching: This may sound silly, but how many times have you searched long and hard for the cause of that error and it turns out that you forgot to close a bracket?
Automatic indenting: Makes your code easier to read and therefore debug. One of my favourite features.

Summary

If you like WYSIWYG IDEs such as Dreamweaver, then Zend Studio is not for you. Also, the system requirements of ZDE recommends at least 192MB of RAM (although most new computers come with that and more anyway). I found it a little memory-hungry and it sometimes took a little time to load up, so it's not ideal when you want to "quickly fix that one line".
Apart from that, I like that it didn't "bloat" my code like DW has a habit of doing and I loved the code completion, especially when using my own functions.
There are two versions of the Studio: you can either buy the full version for $195 or you can download the personal edition, which means that you have full functionality for 21 days and then you lose some of the advanced functions such as the cvs, ftp and remote debugging.
I have now stopped using Dreamweaver when coding in PHP. The functions that is provides may be all very well if you are relatviely new to PHP, but it doesn't come close to the functionality of Zend Studio.