Lightning-Smart and Powerful IDE for PHP Programming by JetBrains


Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more.

Download PhpStorm 2021.2.1

  -  393 MB  -  Trial

What's new in this version:

PhpStorm 2021.2.1
Notable updates in this release:
- Fixed: Re-arrange did not reorder the method with modifiers and name both
- Fixed: CSS class completion doesn’t work great with Tailwind 2.1 in “jit” mode
- Vue 3: Support new <script setup> without ref sugar
- Usage of PSR-2 comment suggestion on no-break switch cases
- Fixed: Freeze on opening project from WSL2 [IDEA-]273398
- Fixed: Showing failed PHPUnit test as passing with incorrect log output (on WSL)
- Fixed: Splash is not shown in 2021.2 [IDEA-]270204
- Support inference based on IteratorAggregate<User>
- Fixed: Add property quick fix adds property without dollar sign
- Enable breadcrumbs by default
- Support phpstan-* annotation for templates (@phpstan-template/@phpstan-param/@phpstan-return, …)

PhpStorm 2021.2
Here are the main highlights of the release:
- Basic support for generics in PHP
- PHP 8.1 Enums
- One-line array shapes
- New inspections and quick-fixes
- Refactoring opportunities inspections
- Formatter improvements
- Reworked Extract Method refactoring

- Actions on save
- New Terminal options
- Run tests before commit
- Browser pages reload on save
- Automatic clean-up of caches and log directories
- Advanced settings

Version Control:
- Unified Show Diff behavior
- Text search in Local History revisions
- GPG Signatures

Code With Me:
- Screen sharing

PhpStorm 2021.1.3
- Updated the bundled webpack schema
- Support row security policies
- Custom rulesets for PHPCS Fixer can have any name ending with .php_cs
- Autoconfigure PHPCS Fixer 3.0

- Services tab with docker compose eats up a lot of CPU
- Editor color scheme keeps getting switched to Darcula
- Tab and Indent settings refuse to save
- Undocked Git tool window keeps shrinking
- Memory leak in Docker Container Log Window on OS X Big Sur with Docker 3.3.0

PhpStorm 2021.1.2
- Support new component options syntax in vue-class-component v8
- Drag and Drop to remote host doesn’t work from “scoped” project window

- PHP Built-in functions are not recognized after update to 2020.2
- A lot of array access to global variable leads to infinite local inspection run
- Cannot infer the correct type for a generic Pipe
- Dark theme shows light code completion suggestions
- “property is only written but never read” inspection does not detect usage within array_key_exists()
- Support possibility to get actual supported rules/rulesets from PHP CS Fixer tool
- Open in Terminal open in wrong folder
- PhpStorm freezes on suggestions
- Class named Resource can’t be found

PhpStorm 2021.1.1
- Find in files not finding occurrences
- Extract Angular component refactoring
- Data sharing options screen unnecessary, appears repeatedly
- Project View tool window gets wider after each open/close cycle
- Press-release-hold Alt doesn’t show tool window tabs
- “Open in terminal” is always opening root instead of the project file directory
- Indexing/Search sometimes prefers a bad match compared with an exact one
- Modal alert boxes in Macos Big Sur are bright white even on a dark theme
- Smart keys setting “Replace unnecessary double quotes on paste” replaces necessary double quotes in Doctrine annotatio
- Wrong refactoring ‘Invert ‘if’ statemen

PhpStorm 2021.1
- Most of the PHP-related configuration options are now at the top level of Settings / Preferences
- The PHP language level can be unsynced from the composer.json requirements, and you can change them anytime from the status bar
- Preview PHP files right in the editor with a built-in browser and local PHP interpreter
- Language injected in assigned values based on variable usage
- Support dynamically-prefixed table names in SQL queries helps integration with Database tools in popular platforms such as Drupal, Moodle, and others where table prefixes are common.

Inspections and quick-fixes:
In 2021.1, we’re adding more than 15 new inspections. Here are just a few of them you can look forward to:
- Boolean expression can be simplified
- Strict comparison of operands with incompatible types
- Replace assignment in the function call with named argument in PHP 8
- Replace `isset` with coalesce
- Simplify `if` blocks with the common body
- New quick-fix: Invert `if` statement

- We’ve added synthetic scopes in loop constructs for better rename refactoring

- Maximize tabs in split view mode by double-clicking on a tab
- JSONPath is supported for better search through big JSON documents
- JSON Lines format is now supported
- Typography settings are available under Preferences | Editor | Font for better font customization
- Just like PHP files, you can also preview HTML files and get a live reload experience with no configuration. It just works out of the box!

Version Control:
- Git commit templates are now supported
- Improved the GitHub pull requests process in the IDE with new features

Code With Me:
- Code With Me is a JetBrains tool for collaborative development and pair programming. We originally introduced it in PhpStorm 2020.3, and it has received significant updates in this release.
- Set the required level of access to your project and share the link with your guests. Peers do not even need to have their own IDEs installed to collaborate, and there are embedded audio and video calls along with chat messaging.
- For businesses that require extra-security, Code With Me on-premises can be installed and securely run on a private network

HTTP Client:
- The built-in text-based HTTP client received several UI tweaks, and support for SSL customization

Web Technologies:
The WebStorm team delivered this release with several improvements:
- Bundled MDN documentation will help prevent connectivity issues with the MDN website and make in-editor documentation in your HTML, CSS, and JavaScript files display more quickly.
- When working with style sheets, you can now check the specificity of your selectors – just hover over a selector that you want to check
- Improved support for Stylelint allows fixing issues in your CSS by using Alt+Enter quick-fixes

Database Tools:
- Database tools in PhpStorm come with several improvements: UI for grants, context live templates, better navigation, and data editing in MongoDB, just to name a few.

Notable Fixes:
In this quality release, we fixed a number of important issues. Here is a selection of interesting ones:
- Debugging WSL 2 projects in Docker
- Resolving correct paths for quality tools with Docker Compose in exec mode
- Correct handling of big files (more than 5000 lines of code)
- Significantly improved performance in projects with many aliases

PhpStorm 2020.3.3
- Unnecessary backslash escape in triple-backticked bash block
- OSX Keychain is not available on Apple ARM chips (aarch64)
- Diff view detects big diff but change was only small
- Close All But Pinned
- Branch list doesn’t focus item on right click

PhpStorm 2020.3.2
- Shortcuts with “Shift” modifier do not work with national layouts in 2020.3.1
- Adding a new JSX tag causes simultaneous editing of non-related closing tag
- Vue: support type inference for component props within template
- TailwindCSS completion/css-preview on hover doesn’t work when using breakpoint prefixes with utilities

PhpStorm 2020.3.1
- Support for @phpstan- prefixed PHPDoc tags

- PhpStorm fails to find files, methods, variables (broken index after opening multiple projects)
- Sending detach to Xdebug older than 2.9.4 turns debugging off in php-fpm, the server has to be restarted to get it back on
- PhpStorm doesn’t send any command to older Xdebug versions (2.2.5, 2.3.2)
- Tabs created by Remote Host Browser are being pinned affecting the tabs order
- Cannot parse PHPUnit version because of Xdebug warning output
- Vue: support Vue.extend() construction
- Nuxt.js: support component auto-import with @nuxt/components
- Cucumber.js: support for versions 6.0.0+
- Cucumber.js 5 step definitions can’t be matched when using custom parameter types
- Pull Requests comments are duplicated in all files
- Compound Run Configuration .run.xml files are duplicated many times when stored as project file
- Tool windows in “Empty state” are not closed with shortcutD
- ESLint report file paths are not clickable

PhpStorm 2020.3
- Change log not available for this version

PhpStorm 2020.2.4
- Change log not available for this version

PhpStorm 2020.2.3
- CodeSniffer gets temporary filename instead of real
- SSH-Configuration not saved to the Development Settings
- Wrong item is focused in the Project View with “Always Select Open File” enabled
- Search everywhere popup opens partially offscreen
- ‘Enter’ on a module source or content root opens Project Structure dialog

- Docker. Support –init command line option
- Remember selected options in Git Pull Dialog

PhpStorm 2020.2.2
- Fixed: No tests executed when running PHPUnit tests with WSL interpreter (WI-54615 +21)
- Fixed: Exception is thrown on editing code and warnings are stuck (WI-53963 +18)
- For remotes with GitHub account now used and login is not requested (IDEA-248658 +15)
- DB connection configuration dialog takes into account ssh tunnel (IDEA-247277 +10)
- Fixed: File Watcher Not Running Properly for Sass @Use/@Forward (WEB-42904 +7)
- Custom inspection severities are now rendered correctly (WI-52633 +6)
- Fixed: Auto-completion for double underscore functions (WI-54771 +5)
- Fixed: Loading composer packages update availability runs forever with private repositories (WI-54105 +1)
- Extract class refactoring now makes properties typed for PHP > 7.4 (WI-53412)

PhpStorm 2020.2.1
- Change log not available for this version

PhpStorm 2020.2
- Change log not available for this version

PhpStorm 2020.1.4
- Fixed: Cannot open context menu in project view (IDEA-242047 +24)
- Fixed: IDE doesn’t start after update to 2020.2 EAP2 (202.5103.13) (IDEA-242552 +7)

PhpStorm 2020.1.3
- Change log not available for this version

PhpStorm 2020.1.2
WSL 2 Support:
- WSL 2 is a new version of the Windows Subsystem for Linux architecture that allows Windows to run Linux binaries. PhpStorm has supported WSL 1 since v2019.3, and now it supports WSL 2 as well
- You can run PhpStorm on a Windows machine and target Linux environments without any hassle
- To get started, make sure you have enabled WSL on your Windows 10 version 2004 machine, and also make sure you have the Linux distribution of your choice installed. See the installation guide.
- After installing PHP in your WSL environment, you’re ready to set up PhpStorm. Add a CLI interpreter under File | Settings | Languages & Frameworks | PHP
- Once this is done, you can use the specified interpreter to run and debug any scripts and to execute Composer commands, PHPUnit tests, and quality tools
- One thing that’s still missing is support for Docker via WSL 2

Other notable changes:
- Fixed: Idea freezes with AppleSystemUIFont when Event Log is opened (MultilineTreeCellRenderer takes a lot of time doing stringWidth)
- CSS/SCSS formatter need is now aware of CSS3 grid-layout properties
- Fixed: Some text in “IDE and Plugin Updates” popups in dark themes is gloom
- Fixed: Wrong project name and path when opening project with shell script
- Fixed: Scanning node_modules directory with many files freezes IDE on project open
- Fixed: Next/Previous occurrence actions don’t work when Find Usages is open and the focus is in the editor
- Navigate to File now honors the Sources directories first
- Fixed: High CPU usage on editing
- Fixed: Incorrect inspection for trait collision for PHP > 7.3
- Fixed: Memory leak / code analysis never finishes for a certain project
- Fixed: Fail to parse validation script output on reload php info for vagrant remote interpreter

PhpStorm 2020.1.1
- Find Usages does not prompt when method overrides/implements base method
- Can’t validate PHP XDebug >= 2.9 configuration
- Command Line Tools fails on PHP 7.4
- Broken update artisan commands for Tools based on Symfony console
- Matching braces highlighting is incorrect
- a pair of issues involving external tools

- Color customization for @param tag (WI-50427 +4) – the last missing part to disable PHPDoc highlighting if you didn’t like it
- We started to roll out the WSL 2 support (WI-51942), so if you are a Windows user, we’d be happy to hear your feedback

PhpStorm 2020.1
Out-of-the-box composer.json support:
- All dependency management actions are now available directly as you edit the composer.json file
- You can create a new file composer.json from the context menu or by pressing Ctrl(⌘)+N. The template of this file can be found in Preferences/Settings | Editor | File and Code Templates.

Add package as a dependency:
- To add a dependency, simply start typing a vendor and a package name, and PhpStorm will suggest appropriate options
- The version field will offer the available versions of this package. For now, you’ll have to add caret or other symbols for the version range manually, but in the next releases, we will implement this too.
- Autocompletion will also work if you need to specify the required version of PHP and extensions.
- In the popup for packages, you can find information from about the number of downloads and stars. All the information about packages and their versions is taken from and cached.

Install and update packages:
- If there is no composer.lock file and no packages are installed, PhpStorm will highlight the require and the require-dev section names. You can click the Install button in the toolbar above the editor. Or you can use the intention by pressing Alt(⌥)+Enter and choosing Install packages.
- And if only some of the packages are downloaded, PhpStorm will highlight those that are not yet installed. By pressing Alt(⌥)+Enter over them you can choose Update package or Update all packages.
- Next to the version requirement, the currently installed package version will be indicated in grey.

Navigate to files and folders:
- You probably know that with Ctrl(⌘)+Click or Ctrl(⌘)+B you can go to entity definition or search for usages
- In the composer.json it’ll work too. If you Ctrl(⌘)+Click a package, the corresponding directory will be highlighted in the Project Tree. And if it’s a file, then it will be opened in the editor.
- Ctrl(⌘)+Click or Ctrl(⌘)+B on any link in the composer.json will open it in your browser

Autocompletion in autoload(-dev):
- Autocompletion works for namespaces and folder paths based on information from classes and directory structure of the project
- [email protected]
- Ctrl(⌘)+Click and Ctrl(⌘)+B to navigate to files and folders also works here

Improvements for scripts:
- First of all, navigation to files/folders/methods also works. Secondly, aliases for commands are supported. And third, scripts can be run from the editor by pressing the gutter_play_tr button near the script name.

This automatically creates a Run configuration. It means that you can re-run the script by a shortcut Ctrl(⌃)+R, which is quite convenient for debugging:
Code Quality Tools:
- If there is a FriendsOfPHP/PHP-CS-Fixer in the dev dependencies, PhpStorm will check whether the corresponding inspection is enabled and if the ruleset is set. If not, you can call Alt(⌥)+Enter to fix it:

Improvements to PHP type inference:
- The type inference engine is the core of PhpStorm, and several noticeable changes were made to it

Highlighting redundant @var tags:
- Adding @var tags is a good way to suggest PhpStorm the variable’s type. But since we are constantly improving the type inference, some of such declarations may well be redundant because PhpStorm already knows the type. Such cases will be highlighted and they can be removed using the Alt(⌥)+Enter and “Remove @var” quick-fix.
- Tracking null types is a tough task, and there were places where PhpStorm failed. In 2020.1 PhpStorm knows when a variable can be null and when not. Check these examples.

Code Completion for an initialized array:
- Suppose you have an array with known elements, and later you try to iterate through it. The code completion didn’t work here before, because information about the type was lost. Now in 2020.1 everything works.

Code completion in array_map/filter:
- Now there is completion for array items in the body of the closures passed to array_map() and array_filter()

Code coverage with PCOV and PHPDBG:
- You can get a code coverage report by using Xdebug. But since it is primarily a debugger, it has a significant overhead. To speed up reporting of coverage, you can use lighter tools such as the krakjoe/pcov extension or PHPDBG which is built-in with PHP 5.6+.

Both are now supported in PhpStorm. You need to create a Run configuration for tests and select the desired coverage driver in the settings. And then run tests with coverage report by clicking run_coverage_tr:
- Read more about the differences in coverage reporting between Xdebug, PCOV, and phpdbg in README of PCOV

PHPUnit Toolbox:
- In the recently released PHPUnit 9, many features have been removed or declared obsolete. To speed up migration and prevent errors, we have added lots of inspections and quick-fixes.
- Also, you can now create a new test for a class very quickly by calling Alt(⌥)+Enter on the class declaration and selecting Create New PHP Test.

- Advanced Metadata allows you to provide PhpStorm with additional information about your project and thus improve code completion and inspections. For example, this feature is used in the Symfony plugin and in Laravel IDE Helper.
- A number of improvements for metadata have been added to PhpStorm 2020.1
- The parameter index in override, map, and type directives

Previously, it was possible to adjust the behavior of the first argument of functions using override(), map(), and type(). In PhpStorm 2020.1, you can now specify an arbitrary parameter index:
- If you’re trying to access properties through the magic __get() method, the information about the type is lost. You could use additional @var or @property tags, but that didn’t always work. Now you can specify everything through metadata.

Completion for keys to the objects implementing ArrayAccess:
- Metadata supported ArrayAccess objects, but only suggested the type of values. Now the available keys can also be autocompleted

Custom output points:
- PhpStorm considers functions like die() and exit() or throwing exceptions as terminating execution. But applications may have more complex exit points, for instance, a simple dd() or a trigger_error() with an E_USER_ERROR argument.
- In PhpStorm 2020.1, you can mark any functions as exit points and this will correct the control flow analysis accordingly

Icons for functions with changed behavior via metadata:
- Functions whose behavior was changed using override(), exitPoint(), or expectArguments() will now have an icon in the gutter. Clicking the icon will open the .phpstorm.meta.php file where the behavior was modified.
- You can hide these icons under Preferences/Settings | Editor | General | Gutter Icons

Machine Learning-assisted ranking for code completion:
- Ranking suggestions using machine learning makes it possible to sort the list of suggestions in a more optimal way

How to see ML in action?:
- By default, the ML-assisted ranking is disabled. We don’t want it to take our jobs! To enable it, go to Preferences/Settings | Editor | General | Code Completion and turn on two options: Rank completion suggestions based on Machine Learning and PHP.
- If you enable the option Show position changes in completion popup, then the autocompletion list will show how the order of items has changed
- We plan to prevent AI takeover to continue to work on this feature in the upcoming releases

New inspections:
- A private property can be replaced with a local variable
- The definition of a property will be highlighted if it is used in only one method and is overwritten immediately. In such cases, you can call the “Replace property with local variable” quick-fix with Alt(⌥)+Enter.

Unnecessary property initialization:
- Let’s assume that a private property has a default value in a class, but some other value is immediately assigned to the property in the constructor. In this case, the default value is redundant and only adds noise.
- Unused initializations will be highlighted and can be removed by using the “Remove redundant initializer” quick-fix with Alt(⌥)+Enter
- Change the property type according to the default value in PHP 7.4
- - [email protected]
- Redundant ternary operator:Phpstorm highlights trivial ternary expressions, and you can replace them with simpler ones using the Alt(⌥)+Enter quick-fix
- Using a pass-by-ref may have unexpected consequences, and this is one of the reasons Nikita Popov proposed to Allow explicit call-site pass-by-reference annotation in PHP.
- In the meantime, PhpStorm 2020.1 will highlight parameters that are declared as pass-by-ref but are not used as such. They can be safely removed with a quick-fix with Alt(⌥)+Enter.

The same will work for arrays with a pass-by-ref in foreach loops:
- Removing an unnecessary PHPDoc block that only has type declarations is now easy thanks to a corresponding quick-fix
- Note that by default the inspection is at the Info level, which means that it will not highlight anything. If you want redundant PHPDoc blocks to be highlighted, set the severity level for the Redundant PHPDoc comment inspection to Weak Warning or higher in Preferences/Settings | Editor | Inspections.

Updated “Move method” refactoring:
- Sometimes it makes sense to transfer a method to another class. If this method is used many times throughout the project codebase, PhpStorm can help you.
- Previously, it was necessary first to make the method static, and then to call another action to move a method. In PhpStorm 2020.1, the “Move method” refactoring is redesigned into one atomic action. Unnecessary operations and popups have been removed and everything is done in a single step.
- Put the cursor over the method and press F6 (or Ctrl(⌃)+T, 3). Then select a destination class and you’re done.

PHP Debug in HTTP Client:
- You no longer need to bother with parameters or install the extension in your browser to start debugging. All you need to do is create an HTTP request in an .http file and execute it by running the PHP Debug command, which is available under the Alt(⌥)+Enter menu, or by clicking the play icon gutter_play_tr. As a result, an XDEBUG_SESSION cookie will automatically be added to the request.

And a few more little things for PHP:
- @deprecated elements are displayed as strikethrough in the Structure tree view
- Ctrl(⌘)+F12

Lexer customization for Twig:
- Sometimes you may need to change the tag characters for Twig templates, for example if you are using Angular, which has the same syntax
- You can now do this under Preferences/Settings | Languages & Frameworks | PHP | Twig

- Advanced spell checker and grammar corrector
- The Grazie plugin is included in PhpStorm out of the box. It checks your text not only for spelling errors, but for grammar and style errors, too. Grazie supports 16 languages, and all checks are performed locally without sending your data to third parties.
- By default, checks are enabled for text files
- You can also enable Grazie for all string literals, comments, PHPDoc blocks, and commit messages
- For PHP, you can turn Grazie on under Settings/Preferences | Editor | Proofreading | Grammar

LightEdit Mode:
- Sometimes you may need to quickly look through or fix a file. In these cases, opening a whole IDE for a single file seems like overkill, but you still want to make use of highlighting and other helpful features you are used to. That is precisely what LightEdit mode is here for.
- It works like this: if you open a file from the command line or OS context menu and PhpStorm is not running, the file will open in LightEdit. Note, though, that if a full-fledged instance of PhpStorm is active, the file will just open in it.

JetBrains Mono is now the default font:
Zen Mode:
- This mode combines Distraction Free and Fullscreen modes, allowing you to take a deep dive into your code without any distractions
- Enable it under View | Appearance | Enter Zen Mode

Split terminal sessions:
- Instead of opening new tabs and switching between them, you can now split the window and open several sessions in one tab. To do this, select Split Horizontally / Vertically from the context menu.

IntelliJ Light theme:
- The light theme has been updated. It is now unified to look the same on all operating systems, and its name has been changed to IntelliJ Light

Customization of the status bar:
- From the context menu, you can select which information to display on the status bar at the bottom right-hand corner of your IDE window

Unified SSH configuration:
- Previously, you had to reconfigure your SSH connection each time you reused it in the deployment, Remote interpreters, or SSH terminal
- You can now add or edit all SSH connections in a single place under Preferences/Settings | Tools | SSH Configurations and then use them wherever, and as often as, you need them.
- The path to IDE configs has changed;
- Previously, Run Configurations were stored in the .idea folder, which many people add to .gitignore in its entirety (there is a better alternative though). Now you can choose any location to save the Run configuration and share it with your teammates through your VCS. This can be especially convenient when onboarding new employees: pull the project, open it in PhpStorm, and run it with a single click.
- To do this, select the Store as project file option in the Run/Debug configuration dialog, and then click on the gear icon to select the desired path in the project.
- run-configurations_share
- Version Control
- New Commit tool window
- The Commit window is available in non-modal mode and is displayed on the left. This way, it does not keep you from viewing and working on other files while the commit is being prepared. This also allows more information about changes to be displayed on the screen.
- The new Commit tool window is enabled by default for new users but disabled for those who previously had PhpStorm installed.
- You are welcome to activate it with the option Use non-modal commit interface under Preferences / Settings | Version Control | Commit.
- commit_flow
- Improved Git branches workflow
- The current Git branch is specified in the bottom right corner of the IDE window. If you click on it, the window will open the VCS | Git | Branches dialog.
- We’ve added a search bar here. The Refresh button updates the list of remote branches. And we’ve added an indicator for each commit: incoming (blue) or outgoing (green).
- git_branches
- Installing Git from IDE
- When you clone an existing Git repository, PhpStorm will look for the Git executable on your machine, and will offer to download and set it up for you if the IDE can’t locate it.
- Reworked Interactive Rebase workflow
- Git Rebase allows you to rewrite commit history. Now you can quickly get rid of “temporary” commits, correct a message, or rearrange the order of the commits. Of course, you can do all this manually from the terminal, but in PhpStorm you can also see the content of the commit and the diffs.
- To start, you need to select the desired base commit in the commit history. Then select Interactively rebase from here from the context menu.
- git_rebase
- Database Tools
- PhpStorm includes almost all the features of DataGrip out of the box. You can check out What’s new in Database tools for an overview from our colleagues about its new features.

PhpStorm 2019.3.4
- Change log not available for this version

PhpStorm 2019.3.3
- Change log not available for this version

PhpStorm 2019.3.2
- DB Console: Execution of stored procedures
- Fixed: Customize Menus – Navigation Bar popup menu items are not saving
- Fixed: Switch tab shortcut skips one file with Tab limit = 1
- Fixed: Start tag has wrong closing tag
- Fixed: Unable to remove Services tool window from panel
- Select on Zerofill column
- Fixed: PHPUnit: Invocation with class name is deprecated
- Fixed: UnsupportedOperationException when trying to open Xdebug snapshot
- Fixed: PHP 7.4 fails on a quality tools due to the conflict with libraries (PHPMD)

PhpStorm 2019.3.1
- Change log not available for this version

PhpStorm 2019.3
- Change log not available for this version

PhpStorm 2019.2.5
- Change log not available for this version

PhpStorm 2019.2.4
- Change log not available for this version

PhpStorm 2019.2.3
- Change log not available for this version

PhpStorm 2019.2.2
- Change log not available for this version

PhpStorm 2019.2
- Change log not available for this version

PhpStorm 2019.1.3 Build 191.7479.51
Notable changes:
- Added support for AngularDart
- Fixed: Changes to my Environment Variables in Configurations aren’t saving
- Fixed: Cmd+E/Ctrl+E doesn’t work for iterating recent files after Recent/Recent edited files union
- Fixed: Pressing the down key in the floating navigation bar closing it, but should show siblings in a popup
- Added warning against usage of private fields in Angular Templates
- Fixed: Performance problem with suggestions and completion in project with redux-saga

JBR 8 was updated to v1.8.0_202-release-1483-b58:
- Fixed the issue with the IDE hanging after logging in on macOS
- Fixed the rotation of fonts with embedded bitmaps

PhpStorm 2019.1.2 Build 191.7141.52
Support Docker for Composer execution:
- The usage of containerized environments by PHP developers is steadily growing by roughly 12% each year – from 18% in 2017, to 30% in 2018, to 42% in 2019, according to The State of Developer Ecosystem Survey. While PhpStorm supports PHP interpreters via Docker and Docker-compose, it still had some parts missing. One of these is Composer integration. You needed a local PHP setup in order to run it. But it could be that this differs from the one you have in your containerized dev environment, or you might not even have a local PHP interpreter at all both of which might cause problems.
- In PhpStorm 2019.1.2, this is finally solved. You are now able to run Composer via any Docker image
- Under Preferences | Languages & Frameworks | PHP | Composer you can find a new Docker radio button option, where you’ll be able to configure the Docker server (this is not a PHP server), as well as provide an image, the Composer executable name, and the container options.
- This feature is a subset of a broader request to support Composer via any remote PHP interpreter (WI-23544). According to the survey and stats, the main use-case is Docker, which is why we have started with this first. We would like to hear from you on how you like the current implementation, then based on this feedback we will try to improve and expand it to the other use-cases

Support new format of Blade debug info:
- We’ve added support for debugging Blade templates in PhpStorm 2019.1. Due to a bug, the debug info format, which is needed for PhpStorm to map compiled files to original templates, since a change was made in Laravel 5.8.11. The current PhpStorm build brings debugging Blade templates experience back (WI-46191) for Laravel 5.8.11+

Other notable changes:
- Fixed: Open recent menu doesn’t display project group if any
- Fixed: Move Caret to Matching Brace moves to wrong position
- Fixed: Terminal tabs can’t be reordered
- Fixed: High CPU usage, code analysis never completes when resolving references from “reselect” module
- Fixed: JDK 11: Response handler doesn’t work (Nashorn is removed)

PhpStorm 2019.1.1 Build 191.6707.66
- Change log not available for this version

PhpStorm 2019.1 Build 191.6707.42
- Change log not available for this version

PhpStorm 2019.1 Build 191.4212.35
- Change log not available for this version

PhpStorm 2018.3.3 Build 183.5153.36
- Change log not available for this version

PhpStorm 2018.3.2 Build 183.4886.46

- In the second minor update for the PhpStorm 2018.3, we are happy to bring you DQL Autocompletion! The release also has some bug fixes and improvements for PHP and the Web, and takes on the latest improvements in IntelliJ Platform.

Autocompletion for DQL:
- In the recently released PhpStorm 2018.3, we introduced advanced support for Doctrine Query Language. Continuing to improve the DQL experience in PhpStorm, this time we give you autocompletion for classes and fields.
- It works the same way as autocompletion for PHP. You need to inject DQL language into a string and start typing. PhpStorm will suggest you to a way to complete your statements on the go.
- If you need to call autocompletion manually, just hit Ctrl+Space and see a list of suggestions popping up next to the caret.
- Autocompletion works with class names and fields, inside SELECT/UPDATE/INSERT/DELETE queries, with SQL function calls, and so on.
- We plan to improve the injection mechanism and work on other improvements. Please let us know how you like the DQL support and what you’d want to see improved.

Other updates worth noting:
- Fixed: IDE hangs when searching in Hebrew+English (IDEA-199367 +28)
- Fixed: MySQL datetime incorrectly shows (DBE-69 +21)
- Fixed: Editor Search/Replace and Find/Replace in Path: font for text input fields is too small (IDEA-106651 +20)
- Fixed: Project update over SSH fails if there are many repositories (IDEA-203005 +7)
- Fixed: IDE hangs indefinitely on PhpDoc auto-generation (WI-44525 +1)

PhpStorm 2018.3.1 Build 183.4588.67
- Change log not available for this version

PhpStorm 2018.3 Build 183.4284.150
- Change log not available for this version

PhpStorm 2018.2.4 Build 182.4505.42

Notable bug fixes:
- When working with tasks and contexts and switching between tasks, IDE will now restore VCS branch and workspace correctly (IDEA-184079 +21)
- Fixed in XML: IDE marks “Element is not allowed here” an Element which is allowed to configure (IDEA-195872 +18)

PhpStorm 2018.2.3 Build 182.4323.68

- This build delivers new features, bug fixes and improvements for PHP and the Web, and takes on the latest enhancements in IntelliJ Platform.

PHP 7.3 Support:
- The first release candidate of PHP 7.3 is already released. The GA of the new version of the PHP interpreter is expected somewhere in mid-December.
- PhpStorm is continuing to add support for new PHP features (WI-42883).

Support for list reference assignment:
- PHP 7.3 introduces the enhancement for list() construction, which allows using references
- You may use the short syntax [] as well

Support for literals as the first operand of instanceof:
- In PHP <7.3 this would cause the “instanceof expects an object instance, constant given” fatal error. In PHP 7.3, the result is always false.

Trailing comma in function calls:
- For a long time in PHP you could add a trailing comma in an array
- In PHP 7.3 it is possible to do same thing for function arguments list
- This works for method calls and closures as well
- This is especially handy when viewing diffs with every parameter located on a new line.
- Note that this only works for function calls, but not function definitions, so the following is not possible

Quick-fix for adding a missing extension to composer.json:
- In PhpStorm 2018.2 we’ve added the new Extension is missing in composer.json inspection. It detects the usages of functions, constants, and classes that rely on PHP extensions not currently listed in composer.json.
- Now, starting from 2018.2.3, you’ll be able to run a quick-fix for such issues: PhpStorm will add the corresponding extension record to composer.json for you.

DQL Support:
- We plan to fully support Doctrine Query Language (DQL) (WI-9948) in the upcoming PhpStorm 2018.3 major release. You may check out initial support in 2018.3 EAP. Meanwhile, in this release, injections of SQL inside text literals will be automatically disabled for strings with DQL identifiers. This will eliminate false positives and make your files clean from warnings.

Notable bug fixes and features worth mentioning:
- Fixed: LoginToGithub dialog invoked from CloneRepository dialog hides immediately
- Fixed: Vue.j SFC not resolving @ alias with @vue/cli 3 if vue is installed in a subfolder
- More options creating Angular Cli project
- Fixed: Cannot attach to remote nodejs after upgrade to 2018.2

PhpStorm 2018.2.2 Build 182.4129.45
Platform updates:
- The database tools now support ClickHouse out of the box
- Fixed a couple of performance issues related to VCS (file scanning)

Notable bug fixes and features worth mentioning:
- PHPUnit: rerun failed tests now works for “defined in configuration file” run configuration
- Debugging maximum simultaneous connection configuration setting is now set to 3 by default
- Fixed completion for interfaces
- Fixed “Deployed file is on server removed” stuck since update 2018.2

PhpStorm 2018.2.1 Build 182.3911.43
- Change log not available for this version

PhpStorm 2018.2 Build 182.3684.42

Custom postfix completion templates:
- Postfix code completion has existed in PhpStorm since version 9, but only provided a limited number of predefined templates. PhpStorm 2018.2 takes postfix completion to the next level by allowing you to add custom postfix completion templates. Create templates to match your project and your personal coding style!

FQCN Completion:
- Completion now matches the namespace in addition to the element name. You don’t have to type or invoke completion for each part of IlluminateAuthEvents anymore – just type IAuE instead.

Move Instance Method Refactoring:
- PhpStorm already the Pull Up/Push Down and Make Static/Move Static Method refactorings that help you move methods around. For handling the methods that cannot be made static or moved across the class hierarchy, PhpStorm 2018.2 introduces a refactoring that allows for moving an instance method to a parameter class or to a field class. Simply invoke the Move refactoring on a method declaration, and, if the new refactoring can be applied, you will see a dialog prompting you to choose the target class.

PHP Language:
Structural Search and Replace:
- In PhpStorm 2018.2, we’ve completely reworked Structural Search and Replace for PHP, which offers lots of new capabilities and greatly simplifies patterns creation. Now you can specify the type of Structural variable, which lets you, for example, find a call to the specific method where the first parameter is a string. You can use a simple pattern to find a foreach loop with an unconditional return statement, or even create your own inspection that will capture an unnecessarily double-quoted string, if your code style enforces this

Improved SQL Injections:
- In version 8, PhpStorm introduced basic support for string concatenations in Language Injections. The dynamic nature of the resulting strings and the strictness of the SQL parser caused a lot of false positive errors in SQL. In PhpStorm 2018.2, we’ve eliminated most such errors and introduced some new features, too. PhpStorm can now substitute the values of constants directly within the injected string, so you can run a query without copy-pasting their values. In addition, we’ve added support for SQL strings that use sprintf parameters

New Inspections and Quick Fixes:
PhpStorm 2018.2 delivers handy new inspections such as:
- Extension is missing in composer.json reports usages of classes/functions/constants from PHP extensions which are not specified in composer.json
- Non-canonical order of elements in PHPDoc reports tags such as @property, @param, @var, etc. that use a non-canonical order of elements e.g. name Type instead of Type name.
- Optional parameter before required parameter detects situations when an optional parameter appears before required parameters in a function/method declaration.

Web Technologies Support:
New JavaScript Intentions:
- To make you even more productive when working with JavaScript and TypeScript, PhpStorm has a bunch of new intentions that are available when you press Alt-Enter. Here are just some of them: Implement interface, Create derived class, Implement members of an interface or abstract class, Generate cases for switch, and Iterate with for..of.

Completion for events in Vue.js:
- In Vue templates, PhpStorm now provides code completion for events. Event names are suggested after v-on: or if you use the shorthand notation @event. There’s also code completion for event modifiers.
- As usual, all the features and improvements of WebStorm are available in PhpStorm, either out of the box or with free plugins available in the repository. Other noteworthy web-related features include TypeScript 2.9 and 3.0 support, the new Code Coverage feature that helps to find unused code, extract and convert React component refactoring, new integrations with Angular CLI, global file watchers, rerun failed tests and other.

IDE Improvements:
Updated UI:
- We’ve rolled out brand new icons and dark title bars on macOS. Furthermore, PhpStorm 2018.2 brings support for the MacBook Touch Bar! Run and debug your project, commit changes, and update the project right from the Touch Bar

Version control comes with the following changes:
- Easier resolve of merge conflicts
- Enhancements in VCS Log tab
- Browse repository at revision
- Multiple GitHub accounts
- Skip the Push dialog

Database Tools:
Database tools in PhpStorm have been improved thanks to our colleagues from the DataGrip team:
- New SQL formatter
- Source code migrations
- Query plan diagram
- Custom data source

Other improvements:
- Customizable value for $_SERVER['DOCUMENT_ROOT']
- Simple CodeSniffer/MessDetector setup
- The new presentation for Quick Documentation
- Allow renaming old style constructor to the new style
- New Add @method tag quick fix for Undefined method
- Add method quick fix now inserts parameter type hints
- PHPUnit composite configuration
- Jump outside closing bracket/quote with Tab
- HTTP Client: Support environment variables in the request body
- HTTP Client: Support formatting of POST request body
- Docker: navigate from compose nodes and containers
- Docker: wrapping words in Docker logs

PhpStorm 2018.1.6 Build 181.5281.35
- This build fixes the issue with the Register action: IDEA-193747

PhpStorm 2018.1.5 Build 181.5281.19
- Change log not available for this version

PhpStorm 2018.1.4 Build 181.5087.24
- Fixes for PHP Remote Interpreters (Docker/Docker-Compose and Vagrant)
- Compiling PL/SQL code with actual errors
- Support of conditional compilation flags in pl/sql code
- Show inferred type in Flow in Brief Info

PhpStorm 2018.1.3 Build 181.4892.97

- This build delivers new features, bug fixes and improvements for PHP and the Web, and takes on the latest improvements in IntelliJ Platform

Notable bug fixes and features worth mentioning:
- void return type is not autocompleted WI-41850
- Find in Path” shortcut (Ctrl+Shift+F) not working in “Find in Path” preview window IDEA-189447
- Replace all’ confirmation popup is out of focus IDEA-186587
- Run configuration drop down menu does not show the full name of the test being selected IDEA-182763
- Wrong commit and push buttons rendering IDEA-190206
- Don’t add renamed or moved files to git index unless configured to do so IDEA-118140
- Default run/debug configurations are not saved IDEA-189444

PhpStorm 2018.1.2 Build 181.4668.78

Syntax Highlighting in Quick Definition:
- Using the Quick Definition popup became more convenient: with added syntax highlighting, you can now read what exactly a function or a class is doing, without losing your current context.
- Flexible configuration of imports from the global namespace
- In the previous versions of PhpStorm, you could choose to either import everything (functions, classes, constants) from the global namespace or use FQN for functions and constants. We’ve listened to your feedback and realized that more flexibility is sometimes required. In PhpStorm 2018.1.2, you can control auto-import separately for classes, functions, and constants
- For classes, you can choose between “insert FQN” and “prefer import” (PhpStorm will insert import if this doesn’t result in a conflict). For functions and constants, the options are “insert FQN”, “prefer import”, and “prefer fallback” (you can refer to the PHP documentation for its exact meaning)

Notable bug fixes and features worth mentioning:
- Collapsing tree node does not collapses all subnodes (regression)
- Command Line Tools Console – Cursor Not In Run Box
- Incorrect variable name during phpDoc generation for field in case inferred type in constructor $this
- Goto definition’ on ‘new expression’ targeting parent class __construct instead of referenced class
- Provide the ability to disable tooltips in editor without disabling inspections
- Subversion File History not working for links with spaces
- Typescript readonly type inference from const
- Add option to omit JsDoc types for TypeScript code

PhpStorm 2018.1.1 Build 181.4445.72

File-level suppression to PHP inspections:
- PhpStorm provides a lot of inspections to catch all sort of errors in your code, but it may occur that some particular code shouldn’t follow the standards set for the whole project. In previous PhpStorm versions, you were able to suppress a warning for a particular statement or declaration. PhpStorm 2018.1.1 brings the ability to suppress an inspection for the whole file: just add /**@noinspection <inspection_name> */ right after the first opening PHP tag or press ALT+Enter on the inspection warning and select Suppress for file in the submenu. You can also use /**@noinspection ALL */ to suppress all inspection for the file.

Required plugins for a project:
- Suppose you’ve found an essential plugin that would help a lot with developing your project (Symfony or PHP Annotations plugins are good examples of such plugins), and you want to make sure that everybody on your team is on the same page. Previously there was no way to let your colleagues know about the plugins without talking to them or writing the readme file. PhpStorm 2018.1.1 introduces Required plugins, which you can locate under Preferences | Build, Execution, Deployment | Required Plugins. You can specify the plugins and their exact versions as the project’s requirements. After you’ve set them, PhpStorm will notify if the required plugins are missing or need an update.

Go to Type action:
- You might have already used the Navigate | Type declaration action when working with JavaScript or when using our other IDEs. It lets you navigate to the type declaration from any expression, and now it is available in PHP, as well.

Notable bug fixes and features worth mentioning:
- Incorrect ‘find usages’ / refactoring of __constructor of parent class WI-19518
- Indexing of large files WI-41378
- Deployment: context menu is missing if no default server is selected WI-40826
- Docker-compose: output isn’t shown WI-41002
- Keystrokes lost during freezing IDEA-186636
- CommonJS: properties of function object returned by exported module not resolved WEB-24161
- DESC/DESCRIBE in read-only mode DBE-397

PhpStorm 2018.1 Build 181.4203.565

PHP Language:
- Inline function/method refactoring
- Refactor your code to functional style
- Configurable unchecked exceptions
- Goto Symbol navigation improvements
- Hierarchy checks for class aliases

- Creating class from test
- Codeception: code coverage
- Better @covers support
- Gutter icons for running tests

HTTP Client:
- Assertions support
- Simplified first start

PhpStorm 2017.3.6 Build 173.4674.46
Bug fixes and features:
- PhpStorm v2017.3.4 & Codeception v2.4.0 incompatibility WI-40950

PhpStorm 2017.3.5 Build 173.4674.45
- Notable bug fixes and features worth mentioning
- Fixed: Built-in SSH: does not support strong security ciphers – Cannot negotiate, proposals do not match IDEA-140196
- PhpStorm v2017.3.4 & Codeception v2.4.0 incompatibility WI-40950
- Fixed: Multiple “Updating indices” bg tasks after external file system changes IDEA-123287
- Fixed: Autocomplete too fast and leads to errors when inputting a number DBE-4965
- Fixed: Hide MySQL Collations & Schemas DBE-5557
- Fixed: Database Console name in Files have turned into guids DBE-5904

PhpStorm 2017.3.4 Build 173.4548.32
- Allow UI scale exceed 2x
- Multiple “Updating indices” bg tasks after external file system changes
- Evaluate window: cannot TAB from expression into results tree

PhpStorm 2017.3.3 Build 173.4301.34

REST Client: Auto-formatting of responses:
- In this build, we’ve implemented one of the new REST client’s most voted features: auto-formatting of request results. PhpStorm analyses Content-Type and formats the response accordingly. If type detection has failed for some reason, you can still choose between JSON, HTML and XML formatting manually. To see the original response, you can select the View as Text formatting type

Highlighting call-site in case of pass-by-reference:
- PHP 7.3 may introduce “Explicit call-site pass-by-reference” (RFC) that will allow prepending of a call-site argument with &. This should help to understand the code and notice possible unexpected changes of a variable. It’s still a year till the 7.3 release, but why wait?
- In this build, we’ve extended parameter hints with pass-by-reference visualization that will help you find a function or a method call that has reference declaration in a parameter. The new parameter hints will be shown for all arguments that are actually passed by reference. Please share your feedback about the new feature!

Notable bug fixes and features worth mentioning:
- Fixed: Short syntax array destructuring does not allow skipping values: WI-34517
- Fixed: Unhandled exception: doesn’t analyze “new MyClass” (constructor) expression: WI-37946
- Fixed: Broken “Change to” spelling quickfix in the Commit dialog: WI-39142
- PHP New Class now saves previously selected template: WI-39427
- Fixed: “Can’t run 32-bit version on Windows”: JRE-590
- Fixed: All run configurations lost after upgrade to 2017.3: IDEA-182966
- Fixed: Tool Window docking issue IDEA-149061
- Fixed: FETCH ALL IN returns error org.postgresql.jdbc4.Jdbc4ResultSet: DBE-2465
- Fixed: DataGrip does not recognize Redshift’s WITH NO SCHEMA BINDING clause: DBE-5404

PhpStorm 2017.3.2 Build 173.4127.29
Notable bug fixes and features worth mentioning:
- Unhandled exception shouldn’t be reported for tests with @expectedException
- Improved discoverability of Recursive Search in Find Window

PhpStorm 2017.3.1 Build 173.3942.32
- Support custom templates variables in ‘new class’ dialog
- Fix “Structure view is always collapsed”
- Fix Tool Window docking issue
- Fix “Unable to update issue state from Open Task dialog”

PhpStorm 2017.3 Build 173.3757.138
- Brand new editor-based REST client. With the new REST client, all the powers of the PhpStorm code editor are now available for your REST requests.
- Significant performance improvements. Typing latency in very complex PHP files has decreased significantly. We've examined typing latency in the mPDF main file, which is a 38k-line-long mix of PHP, JS, and HTML, and it is down by 75% in PhpStorm 2017.3!
- New inspections for exception handling. Three new inspection Unhandled exception, Redundant @throws and Redundant catch clause with corresponding Quick Fixes will help you take exceptions under your control!
- Test generation improvements. Now you can create Codespec and PhpSpec classes and create test methods!
- Improved Twig support. We've implemented language injections for Twig custom tags and named blocks as well as improved Twig formatting that can now handle complex structures.

Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more.