Eclipse and PHP

Eclipse is a development environment written in Java for Java. There is an add-on module for PHP. After many years of development, the combination still fails. There is a special custom version of Eclipse with the PHP add-on perfectly matched with Eclipse and that still fails. Using Eclipse for PHP development is still a battle not worth winning.

I started this article in 2004 based on Eclipse 3. Prior to Eclipse 3, Eclipse was so useless that I never proceeded far enough with Eclipse to bother writing an article. Eclipse is supposed to work across platforms. I work on Ubuntu Linux, various versions of Windows, and some other versions of Linux. Prior to Eclipse 3, neither Eclipse or the underlying Java worked across the platforms I used. Microsoft made Java 20 times faster. IBM gave up on Sun and produced IBM Java. By the time Eclipse 3 arrived, Java was fixed up to the point where Eclipse could be used for simple editing projects.

Bluefish and a dozen other editors were better than Eclipse for straight editing and for fancy editing of PHP.

Eclipse is now at 3.7.1, a version named Indigo. Eclipse gave up on the misrepresentation of Java as some sort of platform or version independent development environment. Eclipse now ships Java with Eclipse so you will have a compatible version. This is the honest way to handle Java. Have a complete full duplicate space wasting version of Java shiped with every copy of every Java based application.

The PHP extension for Eclipse is now named PDT, PHP Development Tools. The current PDT (at the time I am writing) works with the current Eclipse but you cannot apply any updates because of the usual Java prerequisite compatibility issues. It looks like you are stuck with throwing Eclipse away every couple of years and starting again.

Eclipse is at eclipse.org. The PHP extension for Eclipse is at eclipse.org/pdt/.

Eclipse Install

The special version of PDT prepacked with Eclipse and Java is the smallest download, is not an official package from Eclipse, and does not work in Ubuntu Linux 11.11. You might be lucky and make the download work somewhere.

Download Eclipse first. Eclipse can then download a working version of PDT. The generic Eclipse is three times the download size of the PDT download then the generic Eclipse doubles in size when expanded out during installation. By the time you add the small number of Eclipse add-ons required to use Eclipse for a PHP project, you waste a gigabyte. If you choose the same features as small independent applications with the efficiency of Bluefish, you will use less than 0.05 gigabytes.

Directories

Eclipse starts with a workspace directory that defaults to /home/peter/workspace for my login to Linux. Everything is stored in the workspace plus some things are duplicated to a hidden location. When you have major problems with Eclipse, you can delete the workspace then start again. A mysterious random selection of settings will be remembered after you delete the workspace. In some cases you will have to uninstall Eclipse, delete the workspace, then install Eclipse. I went through the cycle at least three times on one Linux machine before giving up.

Eclipse automatically picks up plug in modules by reading the plugin directory structure when Eclipse starts. Eclipse does not do the same for you project file directories. Eclipse used to store the plugs in a mystery location. Now the settings are in your workspace. When you delete and recreate your workspace, something I had to do many times when attempting to make Eclipse work for a very simple project, many settings will disappear but some hang around to annoy you.

You have to manually add all new project directories. There are options to import projects. There is no documentation of what will be imported and the imports did not work in any of my tests. Some of the imports copied files, or created files, but they did not produce working projects containing the files for the projects. The only way I could create a working project was to create a new empty project then recreate the files one at a time.

When you add a directory, you can add a pointer to a directory anywhere on your computer or anywhere on your network that you can access by a fixed file name. That means you can have a logical structure unrelated to the physical structure. Anyone who has built logical structures from physical directory structures using either Unix links or the IIS style logical links, will know there is one real problem with complex logical structures.

Logical links are fine when you are following the logical structure from the top down to a physical directory. A problem occurs when you have to start at a physical directory and work upward to find where the directory is used. Some developers set up complicated directory structures then find other people cannot understand the structure.

One solution is to make the logical and physical structures the same so everyone has the same view. That would be greatly helped if Eclipse could display new physical directories added within existing structures. You could then easily add the new physical directories to Eclipse's logical view.

Another solution is to let the Web server builder set up the Web server for optimum use and then replicate that within Eclipse. You then add all the Eclipse project files through a similar parallel directory structure. The logical links then merge the two structures.

None of the logical approaches worked consistently. To make sure every file worked consistently, I had to create everything in Eclipse than copy code from the existing files to the new files. painful.

PDT

All my problems from 2004 with the previous PHP add-on are fixed in PDT. PDT worked when I created a PDT project then created PHP files. PDT damaged the formatting of my files and I had to reformat by hand. This is a big leap forward from not being able to edit anything. Based on the very slow load time of Eclipse and

Replacing Homesite

Homesite is the world's most popular Web site editor. Homesite handles PHP, HTML, CSS, and FTP, which is enough for most web projects. To replace Homesite with Eclipse, you need the Eclipse CSS plugin, the FTP plugin, and the PHP plugin. The CSS plugin is still a very early version and needs a lot of work to catch up to the CSS add on supplied with Homesite.

To make Eclipse better than Homesite, you need to use at least one more plugin. I will try the SQL and XML plugins including XMLBuddy. (The free version of XMLBuddy works with DTDs. You have to buy the professional version to work with schemas.)

Eclipse Learning Curve

Eclipse does a lot of work around projects. You get little advantage with Eclipse unless you use multiple projects. Starting with a bare bones Eclipse, spend a couple of days working through the supplied tutorials. Work out how you might connect Eclipse projects to your current projects.

You then need at least a day with each Eclipse plugin. You then need a day to plug in PHPeclipse, edit the configuration, and practice with the new editor. Remember to try global searching. Global search facilities are one of the things that make Homesite and equivalents so much more useful than plain text editors.

PHPeclipse has a companion SQL plugin. Eclipse has all sorts of plugins for data dictionaries and database management. Some are proprietary. Look at the options for building logical models of databases and having Eclipse generate the SQL.

There are lots of XML plugins. You might be able to choose one from the online information or you might have to plug in several and test them side by side. A quick look at the free XML plugins suggests I will need more than one or have to buy a proprietary plugin.

You get the most advantage from Eclipse when you use several features together. You have to use more than Eclipse, PHPeclipse, and the FTP plugin to go beyond the Homesite approach. That means you have to spend a week or two learning to use all the features of Eclipse plus four or more plugins.

Summary

Eclipse 3 looks better than Eclipse 2. Eclipse 3 should make life easier for people using Eclipse as the base for anything other than a Java editor. PHPeclipse will run with Eclipse 3. Unfortunately you need to know Java to make some of the most basic configuration changes. To make full use of Eclipse, you have to learn a lot about Eclipse. I recommend Eclipse when you work on several projects in parallel, you have several spare days to work through all the Eclipse tutorials, and have several more spare days to experiment with each plugin.