My next PHP IDE
Arghhhh! Where is that perfect development environment that lets you focus on implementing the unqiue features of the software you want to build? The software that doesn't make spend time on configuring systems, integrate tools, generate common code etc.
For nearly all development I use Eclipse and have used it for a long time. But when developing PHP based software the feeling grows that it's not good enough. I want a real integrated development environment, not a toolbox you have to fill up with bits and pieces and need to configure and tweak to get working.
And it doesn't have to be free. If its good it will save time and frustration and that worth something.
Perhaps some of you remember what Delphi could do 20 years ago. Well, something like that would be a nice starting point.
What follows is a list of features I want for my PHP development tool.
Basic Features
Off course it has to have the basic features like:
- file management options
- code browsers
- configurable code editors
- code completion
- integrations with versioning systems
Killer features
These are the additional functions my IDE should have:
- The tool includes all officially supported PHP versions, a HTTP server and database to run the developed applications. These parts come with the IDE and are ready to use.
- In some form default solutions are included for standard application types. Some examples: a website, a WordPress plugin, a RESTful API for a set of entities or a data access layer. These default solutions include all libraries and working configurations to start an empty, but fully functional application.
Frameworks or libraries like Laravel, Symphony, Doctrine or whatever can be used as long as they are broadly supported and not likely to disappear anytime soon. - PHPUnit support is included and it is possible to generate skeleton test classes, run all tests when saving a file and show coverage results.
- Composer support is included and can be used to find components, install them and show dependency trees. When an existing composer.json file is detected the IDE can download the components and make them available for code-completion.
Nice to have would be to automatically keep track of a semver version number of a component you develop. - All code editors have macro support. Where has that feature gone? There used to be editors that let you record, execute, store or write macros to perform repeating tasks.
- Code has to look good and consistent to be easy to understand, so a good formatter is necessary. It can reformat code automatically with each save and apply the configured coding style. Especially better then Eclipse's PDT on indenting, line splitting/combining and member sorting.
- Code will change and refactoring is an important part of developing. The IDE must have tools to do things like renaming a class or method throughout a complete codebase. This includes the filenames of classes, their test classes and references in documentation. Other refactoring options are extracting parts of a class as a new class or interface.
It would be nice if the tool can detect duplicate code parts and offer to change that into a new class. - The documentation of a component can be generated as a set of web pages. And as much as possible the description must come directly from the code. So for example, it should not be necessary to duplicate the information already defined in method signatures and return statements.
- To keep code up to a required standard the development environment includes analysis tools to detect possible bugs or breaches of coding conventions. Having SonarQube integrated would be nice.
- Sometimes, when everything else fails, you need a debugger. This IDE comes with an integrated debugger to inspect code as it runs.
- The software comes with a profiler to drill down to performance hot spots.
- Oh, and it must run on Windows, as a real Windows application. This means it applies the Windows settings for fonts, colors to screen elements, use the normal Open and Save dialogs etc.
- Please, don't make me use the command line. The last version of MS-DOS was released in 2000, we have moved on.
BTW, the command line tool in PhpStrorm may be part of the IDE, but is still a command line and command lines must die, so that doesn't count as a solution for any of the mentioned features.
Nice to have's
Extra points for software that:
- can apply or generate code based on predefined design patterns or patterns you can add yourself. Even better if it can do this in a non-destcructive way.
- supports test driven development by letting me define a test and produce a base implementation.
- includes UML modelling, can generate code from the models and keep models and code in sync.
- can generate a database from entity classes and their relations.