Review: Eight PHP power tools

Eclipse PDT, NetBeans, NuSphere PhpED, and Zend Studio lead a capable field of IDEs for Web developers.

Though precise statistics are difficult to obtain, PHP is undeniably a top choice as a Website building language. Since October 2009, the TIOBE Programming Community Index has PHP holding third place -- behind Java and C -- among programming languages overall. Regardless of the exact extent of PHP's usage, you need only consider that Web sites such as Facebook -- which manages millions of users and petabytes of content -- use PHP; workloads of that magnitude demand a serious programming language and supporting environment.

You can't build a world-class Website without a good development environment. In the case of PHP, the development environment must be particularly capable; a PHP programmer will rarely be programming only in PHP. PHP is necessarily entwined with HTML and JavaScript on the front end and with SQL on the back end. Consequently, a good PHP IDE must allow the developer to work with equal ease in multiple languages (both programming and markup) and contexts.

[ Debugging a mixture of HTML, CSS, JavaScript, PHP, and SQL requires the right tools. See "Debugging PHP Web apps is hard to do." ]

In this article, we examine eight IDEs: ActiveState's Komodo IDE, CodeLobster PHP Edition, Eclipse PHP Development Tools (PDT), MPSoftware's phpDesigner, NetBeans IDE for PHP, NuSphere's PhpED, WaterProof's PHPEdit, and Zend Studio. All of these PHP toolkits offer strong support for the other languages and environments (HTML, CSS, JavaScript, SQL database) that a PHP developer encounters. The key differences we discovered were in the tools they provide (HTML inspector, SQL management system) for various tasks, the quality of their documentation, and general ease-of-use.

In our estimation, four of these IDEs rise to the top. Zend Studio is an excellent PHP IDE once you become familiar with the Eclipse landscape. NuSphere's PhpED is also first rate and deserves your consideration if you need a professional-quality IDE and support. If you're on a budget or you can make it without technical support, Eclipse PDT and NetBeans are exceptional tools.

[ Don't see the scorecards, screen images, or table? Read the original article at InfoWorld.com. ]

As always, development tool choice is heavily influenced by personal idiosyncrasies. For example, we know good developers who love Eclipse, and we know good developers who despise it. All the IDEs in this roundup are either free or available for a reasonable trial period. Use our commentary as a guide, but you owe it to yourself to spend some time with each IDE that appears to have the proper mixture of features needed on your PHP project.

See the first PHP tool: ActiveState Komodo

ActiveState Komodo ActiveState's Komodo is not only a PHP IDE, but a multilanguage development environment that can also handle Perl, Ruby, Python, Tcl, and others. In addition, Komodo is OS agnostic; it can run on Windows, Mac OS X, and Linux. Licensing is by user, so a single license allows you to execute the IDE on multiple platforms. We tested the Windows version of Komodo 5.2. You can download a 21-day trial edition from the ActiveState Website.

Komodo installs with support for both the Smarty and Zend PHP frameworks, as well as integration with a number of version control systems (CVS, Subversion, and Perforce) and the distributed versioning systems Mercurial, Bazaar, and Git. It also provides shells for those scriptable languages it supports (and that you have installed). We had Python installed, so we could open a Python shell and hand-execute Python code. Because PHP now has a command-line interface, we had hoped to find a shell for it. We were disappointed -- perhaps in a future release?

[ JavaScript, Perl, PHP, Python, Ruby on Rails... Where should programmers place their bets? See "Dynamic programming futures." ]

The Komodo UI is built on the Mozilla codebase. As a result, the IDE acquires the exceptional plug-in architecture that Firefox enjoys; developers can extend Komodo's capabilities in the same way that Firefox users can extend its features via Firefox .xpi files. Currently, there are more than 50 plug-ins available from the ActiveState Website. In addition, the IDE supports a macro recorder. Turn the recorder on, issue a series of menu selections or keyboard inputs, and stop the recorder -- a macro is created that you can save for later use.

Some redundancies in the Komodo user interface are mildly distracting. For example, if you want to create a PHPUnit test plan, you can do that either from the Tools | Test menu or the Project | Test menu. We're all for flexible user interfaces, but when you see the same selection in two places, you wonder if there is a subtle difference between the choices.

Komodo's code completion works for all the languages you'll deal with in PHP development. Not only does it provide assistance for PHP elements, but for HTML and JavaScript (including embedded JavaScript) as well.

Komodo's debugger configuration wizard helps you get a debugging session started quickly. You can enable the CGI Environment Simulation setting for your project, which creates a sort of Web server holodeck that fools the application into thinking it's running in a real Web server. You can configure the environment variables and PHP super global variables to make the application see whatever illusory external world you wish. Setting up the CGI Environment Simulation is quick and easy, but there are times when you need to debug the application on an external Web server; Komodo supports that as well.

The Komodo IDE is shown here single-stepping through a debugging session. At the bottom, the output window shows the raw HTML generated so far; the Locals window shows the content of in-scope variables.

Debugging JavaScript in Komodo requires that you install a Firefox plug-in. Luckily, the plug-in installation is automated through a Preferences window selection. While it's possible to debug an application's PHP personality at the same time you're debugging its JavaScript personality, you have to run "multisession" debugging. This amounts to connecting a PHP debugging session in one window and a JavaScript debugging session in another window to the same applications. It's a bit involved; fortunately, the documentation gives a good discussion of the setup and execution.

Komodo has no built-in database management system. You'll have to find a separate tool for that. It does provide an HTML inspector, which installs as a browser proxy. Not only does the Inspector track HTTP request/response transactions, but you can use it as a kind of debugger. You can define actions to be performed if a specified condition is met -- for example, if the content of a request includes a particular string. Available actions include delaying the transaction by a specified amount of time, manually altering part of the transaction (either the request or response) before passing it along, deleting a portion of the request or response, and so on.

Komodo is a capable IDE that's easy to install and work with. The CGI Simulated Environment is a nice feature, but while local debugging is a snap, debugging a remote application can be tedious to set up. Though we would have wished for an integrated database management system, Komodo is nevertheless an excellent choice if your development requirements go beyond PHP and into one of the other languages supported.

See the next PHP tool: CodeLobster

CodeLobster The CodeLobster PHP Edition IDE, available from CodeLobster Software, is perhaps the best-named product in this roundup. Registration for the IDE is free, but its half-dozen plug-ins are not. Each plug-in has a different trial period, ranging from one week to 30 days. The plug-ins provide support for the open source Drupal CMS, the JQuery JavaScript library, Joomla, the Smarty PHP framework, WordPress, and the PHP Web application framework CodeIgniter.

These plug-ins primarily assist in the editor's code completion functions, although the Drupal plug-in gives you a wizard for creating a Drupal Website project. The wizard leads you through a series of query screens -- which version of Drupal, database connection information, theme, and so on -- and builds a skeleton that helps get your Drupal project off the ground.

[ The iPhone wins, and developers lose? See "Software development's winners and losers, 2009 edition." ]

A new user to CodeLobster will instantly notice something missing: a help system. There is "context help," but this appears to work only with code elements. For example, hover over the PHP function mysql_num_rows(), press the F1 key to activate context help, and the online PHP documentation for that function opens in your browser. For real documentation, you have to go spelunking on the CodeLobster Website.

CodeLobster is able to install its debugger automatically, but it needs considerable hand-holding in the process. And here's where the missing help system really hurts. To figure out how to configure your installation for debugging, you have to crawl through the features list on CodeLobster's Web page. There you will learn that you have to fill in a series of parameters in the Preferences window -- including the location of the PHP executable on your machine, where your Web server's virtual folder is, your Web server's host URL, and so on. We found the clearest explanation of the configuration process in the Web site's forums. It took us several attempts to finally get the debugger working.

Even then, we were unable to get the debugger to start at the proper file. There is a Debug URL selection on the Debug menu, which lets you choose the start URL. Though clumsy, that got us the function we needed; nevertheless, it would have been nice had we been able to deduce how to launch the debugger on a specific start file in our project.

At first glance, CodeLobster appears to provide an SQL management system for MySQL. You define a connection to a MySQL database and CodeLobster will open an explorer into the tables of that database. The explorer lets you drill down into the table's columns and their data type definitions -- but you cannot otherwise manipulate that database.

CodeLobster's "dynamic help" system is actually a sort of search engine. Here it finds the prototype for a PHP database function, and also provides a link to the online documentation.

It turns out that the SQL connection serves only to provide CodeLobster with information for SQL auto-completion. Whichever SQL database you have opened in the CodeLobster explorer will be used by the source editor to guide SQL auto-completion. Certainly, this capability is welcome, and CodeLobster is extremely good about deducing when you're entering an SQL statement in a string. We would have been happier, however, if CodeLobster had extended the database explorer to a management UI.

CodeLobster's auto-completion is its finest feature, because it is always on hand to suggest upcoming words or phrases. It actually works like a search engine -- which, though powerful, can sometimes be confusing. If you begin to enter "Select," it will suggest PHP, JavaScript, and SQL instances associated with that word.

CodeLobster is free, but so are two other IDEs in this roundup, which puts CodeLobster against some stiff competition. The lack of an in-the-IDE help system is extremely difficult to bear, especially for users new CodeLobster.

See the next PHP tool: Eclipse PDT

Eclipse PDT There are numerous IDEs based on Eclipse, and countless programming language projects have been crafted in Eclipse IDEs. For PHP development, the Eclipse PDT (PHP Development Tools) project is the place to visit.

Eclipse PDT was developed jointly by IBM and Zend, though contributors come from beyond those two organizations. Recently, Aptana (whose Aptana Studio supports PHP) has begun substantial contributions to the PDT project.

Eclipse PDT is available for Windows, Linux, and Mac OS X. Windows and Mac OS X versions can be had in 32-bit or 64-bit variants. At the time of this writing, the latest release was version 2.1.2.

We tested the Windows version of PDT, an "all in one" installation that bundles every plug-in you need for PHP development and then some. This includes the Data Tools Platform for managing databases, as well as plug-ins for JavaScript development, Web development tools, XML editors, and more. Eclipse PDT also includes the Zend debugger, though you can use Xdebug as well. Of course, if the pre-installed features aren't enough, you can install any useful plug-in from the vast spectrum of Eclipse development tools.

[ Eclipse is a winner of InfoWorld's 2010 Technology of the Year Award, which recognizes the year's best hardware and software. Take a slideshow tour of all 20 winners. ]

The Eclipse paradigm consists of the related concepts of perspective and view. In its simplest form, a view is an editor into work space information (a PHP code editor is a kind of view). A perspective is a collection of views organized toward some purpose, so you open the PHP perspective to edit the files in your PHP project. When it's time to debug your application, you open a debug perspective.

Eclipse's coding assistance is excellent. Aside from the basics (such as syntax highlighting), Code Assist will watch as you type and conjure a pop-up to suggest possibilities for completing a partial code element. These features apply to HTML and JavaScript, as well as PHP. Note that for JavaScript Code Assist to work, you have to enable JavaScript for your project -- a separate step that I missed the first couple of times.

As with any multilanguage IDE, Eclipse PDT's documentation can be daunting, and it only gets worse as you add plug-ins. You can't blame that on the IDE, though. On the plus side, all the documentation is available in a single, searchable interface.

While Eclipse can support both the Xdebug and Zend debuggers, the two are not compatible -- only one can be enabled for a given instance of the PHP runtime. Therefore, unless you want to be repeatedly modifying project configurations, you should pick one debugger and stick with that. We chose the Zend debugger.

The debug perspective of Eclipse PDT, showing the real-time variables view and raw HTML output.

Views in the debug perspective include a window into the PHP source file. Hover over a variable, and its current value appears in a pop-up. If the variable is an object, the pop-up will announce the parent class. A separate window shows variables in scope, and if a variable is an array or object you can open a tree into its internals. A debug output window shows the raw HTML issued by the running program.

Because PDT is Eclipse-based, you can load this IDE with more development tools than you could possibly know what to do with. While some tools may never be needed in PHP development, others could be useful. The Remote Systems Explorer plug-in, for example, provides tools for transferring files to and from remote computers, which do not have to be running the same OS as your development platform. This is particularly handy for copying files between development and deployment machines, or verifying that directory structures are properly organized on the runtime Web server.

Eclipse is probably as close to a do-it-all IDE as it gets. The growing number of spin-off IDEs that point to Eclipse as their fountainhead is a testament to Eclipse's capability. What's best about Eclipse, of course, is its vast supply of plug-ins. You can bedeck Eclipse with attachments that turn it into your one-room workshop for PHP development.

See the next PHP tool: MPSoftware's phpDesigner 7

MPSoftware's phpDesigner 7 MPSoftware's phpDesigner is only available for Windows. This limitation is understandable, given that it is the product of a one-man micro-ISV: Michael Pham, founder, owner, and engineering department for Denmark-based MPSoftware.

A fully functioning 21-day trial version is available for download from the MPSoftware Website. We tested an early release candidate of version 7 of the IDE, and it is an impressive bit of work for a one-person operation.

[ Is Perl, Python, or Ruby best? Do Java or JavaScript count? See "The best open source programming language." ]

Installation of phpDesigner is swift and easy, requiring no additional plug-ins or add-ons. Though phpDesigner is a PHP development tool, it can be used to edit source from a variety of languages, including Python, Ruby, Java, Perl, and others. The IDE offers only syntax highlighting in the additional languages. Active editing assistance (code completion) is available only for PHP, HTML/XHTML, CSS, and JavaScript.

As for phpDesigner, it's equipped with a wide range of code libraries, including the PHP Web-building framework Smarty and many popular SQL databases. The IDE also includes a built-in server equipped with Xdebug. Although phpDesigner can debug Web applications running on an external server (we used a XAMPP installation), it cannot at this time debug applications running on remote systems.

The right side of the IDE is a phalanx of code explorers. These include the Code Explorer, a hierarchical navigation window for the current PHP file, and Code Inspector, a kind of property editor for HTML code. Code Inspector displays -- and lets you modify -- attributes allowed for the HTML tag currently highlighted in the code editor. There's also File Browser, a standard browser into the local file system; FTP/SFTP, a graphical FTP/SFTP explorer; and Project, a standard Project navigation window. In addition, Templates and Snippets are two separate explorers that serve as repositories for prewritten source-code fragments and skeletons that you can drop into the source editor window to accelerate code production.

While working in phpDesigner's text editor, you can -- at any point -- request an "intelligent suggestion" by pressing the Ctrl-Space key combination. This opens a window of allowed source code clauses based on the context of the current insertion point. Code completion is also available. For example, enter an object instance, type the "->" access notation, and a window blooms open with all available methods and variables.

With phpDesigner's HTML preview feature, you can display a Web page in Firefox, Internet Explorer, Safari, or Opera (provided, of course, that the associated browser is installed) from within the IDE. Given that the same HTML might not display identically in different browsers, this is a particularly useful feature.

In addition, phpDesigner lets you check your PHP code's syntax before either running or debugging the application by clicking a "check syntax" button off the debugger menu. This checking is in addition to the as-you-type syntax checking that will catch simple errors in individual lines of code.

If you're debugging a PHP script (that is, a PHP program that runs from the command line), you can run the PHP interpreter directly from within the IDE. The only prerequisite is that you must show phpDesigner the path to the PHP configuration file. For debugging Web applications, phpDesigner plays well with XAMPP; in fact, the documentation recommends XAMPP as the easiest way to construct an Apache-PHP-MySQL development system.

phpDesigner 7 with a breakpoint set in a PHP application. The Code Explorer window helps you quickly locate instances of variables and functions in large source files.

For debugging PHP programs, whether scripts or Web applications, phpDesigner uses Xdebug. You can start debug sessions either from within the IDE or from your browser; phpDesigner boasts all the Xdebug basics -- breakpoints, watches, stepping, and so on. Unfortunately, to debug JavaScript, you must rely on an external debugger such as the Firefox-based Firebug.

Though phpDesigner has no built-in database access tools, it does provide a menu link to the popular and freely available phpMyAdmin tool for working with MySQL databases. (You must configure the IDE so that it "knows" the link to phpMyAdmin.) As an alternative, you could download a separate database manager, and many good freeware GUI-based database tools are available. Nevertheless, it would be nice to have an integrated database manager.

For project management, phpDesigner supports both CVS (Concurrent Version System) and Subversion integration.

While phpDesigner's documentation is passable, it could use some bulking up. A larger collection of how-to or tutorial entries would help a great deal. Nevertheless, we have to be impressed with the quality of this IDE, given that it is largely the fruits of one man's labors. We hope to see improvements in the future.

See the next PHP tool: NetBeans

NetBeans IDE NetBeans is a free, multilanguage IDE available from NetBeans.org. Though NetBeans began life as a Java IDE, versions exist for Python, Ruby, JavaScript, Groovy, C/C++, and PHP. The NetBeans download site offers language-specific bundles, as well as a 300MB-plus kitchen-sink version that installs everything that NetBeans has to offer.

The IDE is Java-based, and it will run on Windows, Mac OS X, Linux, and Solaris. We installed the 6.7.1 version on Windows. NetBeans downloads as a self-installing executable, and the PHP installation includes code editors for PHP, HTML, CSS, and JavaScript. NetBeans PHP is also equipped with explorers for databases and Web services, as well as interfaces into a Hudson continuous integration server and the Bugzilla and JIRA issue trackers.

[ Nine Rails IDEs are leaving the station. Which one should you ride? See "Lab test: Climb aboard Ruby on Rails." ]

The NetBeans IDE interface is a collection of dockable windows, arranged in the familiar "explorers on the left, editors to the right" format. The explorers include a typical project navigator, a file system navigator, and a database explorer. To this trio, NetBeans adds a Web services explorer.

The Web services explorer is prepopulated with nodes corresponding to services from Amazon, Facebook, Google, and other popular sites. You can drill down into a particular service to examine its offered functions and their arguments. Even better: Drag a function from the Web service explorer onto a PHP file in the source editor window, and NetBeans will write the code necessary to call that Web service function.

NetBeans source editing has all the code completion fundamentals. It will close brackets and parentheses, and it provides context-sensitive proposals for PHP language elements: Type in an object and a pop-up appears, listing known instance variables and functions. If you've provided PHPDoc-formatted documentation for the class, that information will be displayed as well.

Because NetBeans PHP includes JavaScript editing capabilities, it will recognize when you have entered embedded JavaScript in the HTML portion of a PHP source file (via the "<script... >" tag) and provide context-aware code completion of JavaScript elements.

NetBeans supports debugging on both local and remote servers. To debug on a remote system, you must first establish FTP (or SFTP) settings for the project so that source files can be transferred to the debug target. NetBeans lets you configure your projects so that files are transferred when they are saved or when the source application is executed. Remote debugging also requires you to set up path mapping so that the debugger knows which local source file corresponds to a given URL on the remote system.

For PHP debugging, NetBeans uses Xdebug. The IDE can also debug client-side JavaScript using a NetBeans-supplied JavaScript debugger. (The NetBeans JavaScript debugger is based on Firebug, an add-on to the Firefox browser.) To debug JavaScript in a PHP file, simply start a debug session, select to debug PHP and JavaScript in the ensuing window, and a Firefox window is launched with the NetBeans JavaScript debugger installed and activated.

NetBeans' HTML pallet automates the process of adding HTML elements to your source code. Drag an element from the pallet onto a source code window, and fill in the parameters in the properties window that appears, and the code is written into your program.

NeBeans' database explorer can access any JDBC-accessible database. NetBeans will automatically detect a running MySQL server at the standard port and create a MySQL server node on the database explorer tree. Right-click the node, and a pop-up opens with commands for starting or stopping the server, opening or closing a connection, running the MySQL administration tool, and so on.

Once you've opened a connection to a database, you can expand the explorer to examine views, stored procedures, and tables. Right-click on a table icon, choose View Data, and an SQL command window opens (pre-populated with a "Select *..." command that executes), displaying the data in tabular form in a separate results window. The results window also provides interactive access to database rows; you can add, delete, or modify rows without having to specify SQL commands.

All in all, NetBeans has one of the briefest startup times of any of the IDEs. Configuration is minimal; we were up and running in a remarkably short time. And debugging in NetBeans was as easy as it gets. In short, NetBeans PHP just worked -- which is just what you want.

See the next PHP tool: NuSphere PhpED

NuSphere PhpED PhpED, available from NuSphere, runs only on Windows, though NuSphere claims that you can execute the IDE on Mac or Linux using the Wine emulator. We tested the most recent version, 5.9, on a Windows XP system. PhpED comes in standard and professional versions. As you might guess, the latter has more features than the former; the Web site includes a comparison table. Special discounts are available for students, but if you want to try out PhpED, you can download a free 21-day trial version.

The PhpED IDE is equipped with tools peripheral to -- but useful in -- PHP development. These include a DB Client for database management, a Terminals window for managing Telnet or SSH connections, and a NuSOAP window for working with Web services. PhpED also provides its own embedded Web server for executing and debugging applications directly in the IDE, but the documentation states that this is suitable for small applications only. Full-blown Web applications should be debugged on an external Web server; PhpED's debugger, DBG, can work with Apache, IIS, or any Web server that executes a standard PHP runtime.

[ Debugging a mixture of HTML, CSS, JavaScript, PHP, and SQL requires the right tools. See "Debugging PHP Web apps is hard to do." ]

When you first launch PhpED, it executes a series of tests to verify that its various components are executing properly. For example, it checks that the DBG listener extension is running, locates the current version of PHP, verifies that it is associated with the .php extension, and finds the php.ini configurations file and the extensions directory. It will also ensure that a debug session will execute properly; it does this by issuing single-step and breakpoint operations to the debugger and verifying that they are acknowledged. This is a bit of a godsend, as you can expend a lot of time just configuring a development system.

PhpED has all the expected code assistance features for PHP, including auto-correction of misspelled words and phrases. Code completion, however, is missing for JavaScript. You can view JavaScript in the Code Navigator, which provides a hierarchical view of JavaScript objects, functions, and variables, but this is limited to JavaScript (.js) files and does not work with JavaScript code embedded in a .php or .html file.

PhpED provides a number of toolbar buttons that accelerate the creation of HTML elements such as text boxes and check boxes. Click one of the buttons, fill in the fields of the entry form that appears, and the HTML code is poured into the document you're editing at the current cursor position.

Also, built into PhpED is a "lite" version of CSE's HTML Validator for checking proper HTML syntax. If you want to see what your application's HTML will produce in the browser, the IDE provides a rendered view. The rendered view is generated by an embedded Internet Explorer, but you can configure the IDE to launch an external browser such as Firefox.

PhpEd's database form wizard will build boilerplate PHP code for connecting to a database, as well as code for adding, deleting, viewing, and updating records in the database. Simply point the wizard at a table in one of your databases and enter the prompted parameters; the source code appears in a window, ready to be cut and pasted into your application. The wizard even produces JavaScript code to perform entry field validation. The NuSOAP wizard is analogous to the database wizard, but whereas the database wizard produces source code for database connections, the NuSOAP wizard will produce source code for SOAP connections.

PhpED is particularly intelligent about setting up debugging. For example, when we asked it to debug using a third-party Web server, it discovered that we had XAMPP installed and located the root directory for us. Applications can be executed and debugged in various modes. That is, your application might be a command-line script file (which requires only the PHP runtime), it might be small enough to run in the embedded Web server, or it might be elaborate enough that it requires an external Web server like Apache.

NuSphere's PhpED debugging a small PHP application. The Code Navigator (right) makes it easy to find components in different language contexts -- PHP, HTML, CSS, or JavaScript.

To handle this variety, you can launch PhpED's Settings Wizard. This wizard steps through a series of questions about the project type, where the project's root directory is, what the corresponding document root directory URL is for the Web server (if that's required), and so on. At its conclusion, the Settings Wizard will ensure that all the necessary settings are configured so that the PhpED debug/run infrastructure will operate properly.

PhpED's DB Client is built along the lines of a standard database explorer. It can connect to a wide variety of databases, including MySQL, Microsoft SQL Server, Oracle, PostgreSQL, and even Firebird. But it is primarily designed for exploring tables. You can examine the table schema (column names and data types), as well as view data. You can enter and execute ad hoc SQL queries and view the results. You cannot, however, graphically manipulate table data -- you must issue Insert or Delete statements. The DB Client is not available in the educational or standard editions.

The IDE's help system is a composite of toolbar selections and fly-out windows. This is a bit confusing; we were never sure which we should refer to. The toolbar selection is a collection of reference manuals, including a PhpED reference and manuals for PHP, MySQL, JavaScript, and so on. The fly-out help includes a Functions window, which opens into a navigable reference dictionary of PHP functions (for both versions 4 and 5), HTML, JScript, and VBScript. Another fly-out window opens a tree view into a miniature library of online manuals, including MySQL, CVS, HTML, JavaScript, and others.

NuSphere's PhpED is a solid IDE. Its embedded Web server and configuration wizards get you up and running quickly. In addition, NuSphere's Web site is exceptional, providing plenty of foreground information, as well as numerous video tutorials.

See the next PHP tool: WaterProof Software's PHPEdit

WaterProof Software's PHPEdit WaterProof's PHPEdit runs on Windows only; the company says it currently has no plans for Linux or Mac OS X. Though PHPEdit is not an open source IDE, you can download a fully functioning 30-day trial version from WaterProof Software. In addition, free personal licenses are available to students learning PHP (their qualifications must be reviewed by WaterProof), as well as organizations employing the IDE for nonprofit uses. Otherwise, you'll have to purchase a professional license (which start at €89).

In addition to the basic capabilities of project management, intelligent editing, and debugging, PHPEdit includes support for the Symfony MVC (model view controller) PHP framework, the free event-driven Web application framework Prado, and the open source CMS eZ Publish. PHPEdit furnishes all the editing fundamentals: syntax highlighting, Code Insight (code completion), live syntax checking, and code hints. The installed frameworks -- Symfony and Prado -- are recognized by the editing assistance components of the IDE. It's important that you use phpDocumentor syntax to comment your code; that's how Code Insight can -- among other things -- supply information about parameters of user-defined functions.

[ JavaScript, Perl, PHP, Python, Ruby on Rails... Where should programmers place their bets? See "Dynamic programming futures." ]

Opening PHPEdit's help system actually opens an explorer pane. The navigable trees within the explorer include MySQL, PHP, PHPEdit, and Symfony. However, PHPEdit's documentation appears to be a work in progress. Some of the help pages were empty in our version. In addition, English is apparently not the help authors' primary language; the documentation had numerous misspellings and awkward constructions. To be fair, the company is based in France, and odds are their English is better than our French.

Operations of the IDE can be automated via PHPEdit script files. The scripting language is simple, consisting of only "action" operations; there are no control structures. Nevertheless, you can customize the IDE virtually without bound; you can even access the actions behind all the IDE's toolbars and buttons. Unfortunately, while the list of available commands is massive, the help section describing them is incomplete. Some pages were empty; others included brief, one-line descriptions insufficient to deduce the command's characteristics.

One particularly nice feature of PHPEdit is its ability to focus on the type of code -- PHP, HTML, JavaScript, or SQL -- that you are currently editing. Click on a bit of JavaScript, for example, and the surrounding text fades to a light gray; the JavaScript stays dark. Also, PHPEdit has the unique ability to recognize an SQL statement, even one embedded in a text string, and offer Code Insight for the SQL being built.

PHPEdit has a welcoming "new project" screen that guides you through the process of getting all your PHP project's components properly initialized.

PHPEdit integrates with the well-known Xdebug debugger for debugging. The IDE includes a built-in server, adequate for small-scale PHP applications. For larger projects, you'll want to have an Apache server available. Luckily, getting a debugging session going with PHPEdit is made simpler by PHPEdit's configuration wizard. Also, if a debug session fails to start, a pop-up appears and offers to launch a debugger diagnostic, which steps through the verification of configuration details. It can determine what part of the configuration process you failed to properly set up. PHPEdit will also install a toolbar in Firefox. Click a debug button on the toolbar, and if the current page in the browser corresponds to a file in a PHPEdit project, the associated PHP file opens in the IDE, ready for debugging.

Setting up database connections in PHPEdit's database explorer is relatively easy, and PHPEdit supports all the popular databases: MySQL, Microsoft SQL Server, Oracle, and others. Actually creating a query is less straightforward, as we could find no guiding documentation. We ultimately figured it out, but PHPEdit's help system is truly an area that needs work.

PHPEdit nicely balances between parental hand-holding and polite guidance. Configuring any system for PHP debugging is often tricky, so it's good that PHPEdit detects debugging problems and runs a configuration tool in response. The IDE's one shortcoming is its woefully incomplete help system.

See the next PHP tool: Zend Studio

Zend Studio Produced in the heart of PHP country, from whence comes the core of the PHP runtime (the Zend engine), Zend Technologies' Zend Studio IDE is part of a collection of PHP-related products that includes Zend Server, Zend Platform, and others. Zend Studio is built atop the Eclipse IDE. In fact, Zend provides an Eclipse plug-in version of Zend Studio, in case you want to enjoy the capabilities of Zend Studio from within a vanilla Eclipse installation. We downloaded and tested the full Zend Studio installation for Windows. A 30-day evaluation version is available from the Zend Website.

When we first executed Zend Studio, it detected that we had not installed Zend Server and recommended that we do so. We downloaded and installed the free community edition of Zend Server. It is built on Apache Server and includes performance enhancements such as PHP byte code acceleration, data caching, pre-installed database drivers, and more. In addition, Zen Server is well integrated with Zend Studio; you can open the Zend Server administration directly from within Zend Studio. Also, when you create a new project in Zend Studio with Zend Server installed, the IDE will automatically set the new project's home directory in its proper location in the Web server's base (htdocs) directory.

[ Eclipse is a winner of InfoWorld's 2010 Technology of the Year Award, which recognizes the year's best hardware and software. Take a slideshow tour of all 20 winners. ]

When you create a new PHP source file, you can choose from a number of code templates to jump-start the file's content. Many are based on the open source Zend Framework. If you create a Zend Framework-based project (available as a project template), Zend Studio will prepopulate the project with components that support the MVC (model-view-controller) structure of a Zend Framework application and open an outline view that gathers each component into the appropriate category.

Because Zend Studio is built on Eclipse, its editing capabilities are virtually identical to those of Eclipse PDT. Its code completion for HTML, PHP, and JavaScript is pretty much the same as in Eclipse. In addition, all the familiar Eclipse constructs appear in Zend Studio: perspectives, views, and so on.

If you've installed Zend Server, setting up a debugging session in Zend Studio is easy. Zend Studio will locate Zend Server, and provided that you set your project's directory in the server's htdocs directory as recommended, debugging pretty much works out of the box. The combination of Zend Studio and Zend Server also simplifies execution profiling. Simply start a profiling session in the Studio and run your application, and Studio produces a variety of execution and coverage statistics, such as time spent in a given file, number of times a function was executed, average time in function, and more.

Zend Studio's foundation in Eclipse is obvious from this screenshot. The servers tab (bottom) indicates that Zend Studio has found the local instance of Zend Server.

Zend Studio installs the Eclipse Data Tools Platform (DTP). This gives you, among other things, the Data Source Explorer, which provides connection to and management of close to a dozen well-known RDBMSes. (Actually, the number of accessible databases is limited only by the number of JDBC drivers you can lay your hands on.) MySQL was one of the pre-installed drivers, so it was easy for us to connect to our XAMPP database. The Data Source Explorer lets you prowl tables, stored procedures, views, and more. Open a table in the explorer, and you can drill into its columns, constraints, indexes, and triggers. You can modify the contents of a table directly in the database table editor. To alter table structures, however, you must manually enter SQL DDL statements. This is done easily enough by creating an SQL file and opening the Database Debug view, from which you can execute ad-hoc SQL code.

Zend Studio is a fine marriage of the open source Eclipse IDE and the Zend family of PHP tools and technologies. As with Eclipse PDT, you can turn Zend Studio into a Swiss Army Knife of development tools. Zend Studio's biggest advantage, however, is its swift and tight integration with Zend Server, which makes executing, debugging, and profiling your PHP application a breeze.

  • Single license lets you run on all supported platforms
  • Code completion works even with embedded JavaScript
  • Debugger can be set up with configuration wizard
  • No built-in database tools
  • Debugging mixed PHP and JavaScript requires multiple sessions
  • Free with registration
  • A good collection of plug-ins
  • Windows only
  • Although the IDE is free, you must pay for the plug-ins
  • Documentation needs work; you have to explore the Web site to figure the product out
  • Free
  • Can draw upon a wealth of Eclipse plug-ins
  • Works on all major OSes
  • Eclipse IDE can require getting used to
  • Configuring for debugging is involved
  • Installation is simple
  • Editor help for languages other than PHP
  • Includes HTML preview feature
  • Windows only
  • No built-in database manager
  • No built-in JavaScript debugger
  • Free
  • Works on all major OSes
  • Includes JavaScript debugger
  • PHP documentation needs improvement
  • Scarcity of PHP-related information lengthens learning curve
  • Configuration check at startup
  • Includes database client and SOAP tools
  • Web site has lots of useful tutorials
  • Windows only
  • No code completion for JavaScript
  • Debug configuration wizard
  • Simultaneous debug of PHP and JavaScript
  • Support for multiple frameworks
  • Windows only
  • Help system could use work
  • Scripting language not adequately documented
  • Multi-platform support
  • Integration with Zend Server simplifies debugging and profiling
  • Can be extended with Eclipse plug-ins
  • New users will need to spend time with the Eclipse paradigm
  • Unlike Eclipse, the commercial version is not free
 

Author's note: Special thanks to Reuven Grehan, who assisted in gathering the information for this review.

This article, "InfoWorld review: Eight PHP power tools," was originally published at InfoWorld.com. Follow the latest news in software development and PHP at InfoWorld.com.

Read more about developer world in InfoWorld's Developer World Channel.

This story, "Review: Eight PHP power tools" was originally published by InfoWorld.

From CIO: 8 Free Online Courses to Grow Your Tech Skills
Join the discussion
Be the first to comment on this article. Our Commenting Policies