|This tutorial describes the features and best practices for using PhpStorm as an IDE for Drupal development (including modules, themes and core). Starting with version 7 (currently in Early Access stage), PhpStorm bundles the Drupal Plugin providing many Drupal-specific features for Drupal 7 and 6, some of which work for Drupal 8 as well.|
- Enabling Drupal Integration in an Existing PhpStorm Project, or Creating a New Drupal Module
- Enabling Drupal Integration in an Existing PhpStorm Project
- Creating a New Drupal Module
- Development Environment Configuration
- Hook Support
- Completion for Hook Declaration
- Navigation to Hook Invocations from the Gutter
- Quick Documentation for Hook Declaration
- Drupal Command Line Tool Drush Integration
- Search in Drupal API Right from the Editor
- Coder and PHP Code Sniffer Integration
- Drupal Issue Tracker Integration
- Debugging and Profiling Drupal Applications with PhpStorm
- Video Tutorial on Drupal Development using PhpStorm
When the project you're working on is recognized as a Drupal Module, you will be offered to enable support for Drupal automatically with a popup and event in the Event Log.
You need to provide some additional information on Drupal Installation Path (root folder of your Drupal Installation) and version number (currently 6 and 7 are supported). Select Set up PHP | Include paths to automatically configure include paths for the project.
Drupal integration settings can be changed in Settings | Drupal.
A new Drupal module can be created from the Welcome screen or by selecting File | New Project
Project type should be set to Drupal Module. After clicking OK you need to provide some additional information on Drupal Installation Path (root folder of your Drupal Installation) and version number (currently 7 and 7 are supported). Select Set up PHP | Include paths to automatically configure include paths for the project.
Initial files in the project will be created automatically (.module and .info files).
Whether you enable Drupal support in an existing PhpStorm project or create a new Drupal Module, the IDE checks if the development environment is configured properly for Drupal development. If the configuration does not meet the requirements, pop-ups with a fix suggestion will appear, as well as events in the Event Log. To fix these issues just click the Fix link.
As soon as the path and version of the Drupal installation are provided, PhpStorm includes paths such as drupal/includes, drupal/modules, and drupal/sites/all/modules as libraries, so that it can then provide code completion and other intelligent features based on Drupal core and other modules for our Drupal project.
You can always change include paths by going to Settings | PHP | Include path.
If the Drupal integration for the project is disabled, paths are automatically excluded.
To use code highlighting, you need to set some additional file type associations. A special check is performed by the IDE when Drupal integration is enabled and (in case the required file associations are not set) popups with suggestions to fix the issue appear, as well as Event Log events.
- .module, .install, .theme should be mapped to PHP file type
- .info should be mapped to INI file type
Pre-configured Drupal Coding Standards (code style) has been available in PhpStorm for a while. It can be configured in Settings | Code Style | PHP | Set From... | Predefined Style | Drupal. However, now you will automatically be offered to set Drupal Coding Standard if the project is recognized as Drupal Module or if Drupal integration is enabled. Drupal code style will also be applied to the project in case a New Drupal Module project is created.
Coding Standard can be always re-configured by going to Settings | Code Style | PHP
|Support for Drupal Hooks is provided in .module files only. Read more about hooks on the Drupal API web site.|
Any hook invocations are indexed by the IDE, and hook names become available in code completion with Ctrl+Space (Cmd-Space on Mac OS X) for creating hook implementations.
Navigation to any Drupal Hook is possible from the editor gutter with the 'navigate to hook invocation' icon:
In case of multiple invocations, a list of hook invocations is provided so you can choose which one to navigate to.
You will be navigated to the very line where the relevant hook is invoked with module_invoke_all(), module_invoke() or drupal_alter().
Quick documentation for Drupal Hook can be viewed right in the IDE with View | Quick Documentation (or just by pressing F1). Documentation is taken from .api.php files provided by core and many other modules for reference purposes.
Drush is a command line shell and scripting interface for Drupal.
PhpStorm's command line tool supports Drush 5.8 and higher versions.
In order to configure Drush as a command line tool in the development environment, open Settings | Command Line Tool Support and add new command line tool with the plus icon:
Specify tool type as Drush, choose visibility (project or global), click OK to proceed, and then provide the path to the tool (_which is usually _C:/ProgramData/Drush/drush.bat on Windows or /usr/bin/drush on Mac or Linux_)_. Command definitions will be loaded automatically by the IDE.
Now you can bring up the command line tool by selecting Tools | Run Command... or pressing Ctrl+Shift+X (Cmd-Shift-X on Mac OS X).
Command completion is provided for Drush commands. All output is shown in the PhpStorm Command Line Tool Console.
Read more about command line tools in PhpStorm.
Drupal API Documentation at https://api.drupal.org/api/drupal can be easily reached from the IDE with symbol search. Just select the symbol you are interested in, invoke the context menu in the editor, and then select Search in Drupal API.
The default browser will be opened in order to reach Drupal API Documentation with the request you sent from the IDE.
Coder is a Drupal-specific tool for code review and code manipulation.
PHP Code Sniffer is a tool designed to detect violations of a defined coding standard. It is an essential development tool that ensures your code remains clean and consistent. It can also help prevent some common semantic errors made by developers.
PHP Code Sniffer is supported in PhpStorm. We can integrate both tools (PHP Code Sniffer and Coder's Drupal Coding Standards) with PhpStorm in order to detect Drupal Coding Standard violations.
2. Download Drupal Coder module (7x-2.0 version is recommended). You don't need to install or use the Drupal Coder module - it contains the Drupal Coding Standards inside.
3. Unpack the downloaded archive and find the coder_sniffer/Drupal subdirectory inside. You need to move the Drupal directory contents to /usr/share/php/PHP/CodeSniffer/Standards/Drupal (path depends on your configuration). There should be ruleset.xml in this directory and some other subdirectories.
4. Configure PHP Code Sniffer by providing the path in Settings | PHP | Code Sniffer. Click the Validate button to check if the Code Sniffer tool can be reached.
5. Turn on PHP Code Sniffer inspections in Settings | Inspections | PHP | PHP Code Sniffer validation. Select Drupal coding standard in the list (use refresh button if needed). Click OK.
6. Now your code is inspected by PHP Code Sniffer with Drupal Coding Standards in addition to PhpStorm's inspections. You will see notifications marked phpcs in the editor.
7. If you run Code | Inspect Code PHP Code Sniffer, inspection results will be listed in the section PHP | PHP Code Sniffer validation.
Drupal.org Issue Tracker can be integrated in PhpStorm as a Generic issue tracker providing commit message generation, tasks switching in the IDE, and more. Authorisation in the Drupal.org issue tracker is not supported, so the information we can get is limited to available for anonymous users.
Please check our detailed tutorial on Integration with an Issue Tracking System in PhpStorm and Integrating PhpStorm and the Drupal.org Issue Queue blog post by Cameron Eagans with detailed information on Drupal.org issue tracker configuration.
Issue Tracker Integration configuration is available in Settings | Tasks | Servers. Add a new Generic server with http://drupal.org as a Server URL.
Specify the commit message on the relevant tab if necessary.
Tasks List URL is a Drupal.org issue tracker search address (e.g. http://drupal.org/project/issues/drupal?categories=All for drupal core project) with ServerUrl as a placeholder for http://drupal.org
The Task pattern is
Now we can open Drupal.org issue tracker tasks in the IDE, switch between them, create VCS changelists based on task we are working on, and more.
Drupal-based projects can be debugged and profiled without any Drupal-specific configuration. Please proceed with standard PhpStorm debugging or profiling workflow.