What’s Next: PhpStorm 2022.3 Roadmap
PhpStorm has been around for more than 10 years. From the beginning, our task tracker has been open, allowing anyone to send us bug reports or suggest new features.
We always strive to be more transparent and collect feedback from you, our users, as early as possible. So this time, we want to share with you our public plan for the next release. This is a first for us.
Please note the plan is subject to change, and we cannot guarantee that all of the items below will make it into version 2022.3.
Let us know what you think so we can take your feedback into account in making PhpStorm even better.
What’s coming in PhpStorm 2022.3
Quality and performance
Our top priority will be improving the IDE’s stability and performance on many levels, including reducing UI freezes, speeding up highlighting in editor, and so on.
PHP 8.2
The new version of PHP is expected for public release at the end of November, and PhpStorm will provide full support for it from day one.
PHP 8.2 will come with a few deprecations, so PhpStorm 2022.3 will include convenient inspections and quick-fixes to make it easier for you to upgrade.
Code Vision for PHP
Code Vision is a popular feature available in IntelliJ IDEA, Rider, and the other JetBrains products that gives you interactive hints right in your code.
These can be, for example, the number of times a method was used, the name of the Git user who has changed the code section most often, i.e. the code owner, and many others.
We’d like to make this possible for PHP code, as well.
Quick-fix preview
Some code problems in PhpStorm can be fixed automatically by pressing Alt+Enter. We want to give you the ability to preview the results of a quick-fix or intention before you actually go apply it.
In-editor PHPDoc rendering
We’d like to add a way to render PHPDoc blocks right in the editor in an easier-to-read format. This already works for JavaScript. Now we’d like to bring the same experience for PHP.
Refactorings
Move refactoring
Earlier this year, we added the ability to drag classes and folders in the project tree. However, right now this only works if autoloading is properly configured. We plan to improve and make the refactoring reliable with complex configurations.
Extract constant classes to enum
Before PHP 8.1, it was common to use classes as containers for a set of constants. Since PHP 8.1, this problem is more easily solved by using enums.
We want to update the existing Move static member refactoring that would allow quickly converting a class with constants to a corresponding enum with cases.
Debugging
There are several major areas that we want to improve in PhpStorm’s debugging experience.
Global conditional breakpoints
Sometimes you may want to set a breakpoint that is not tied to any file or line. For instance, imagine you want to see what code in a framework changes $_SЕRVER['REQUEST_URI']
, but you have no idea where to set a breakpoint. This is where global conditional breakpoints can be useful.
Interactive debug console while debugging PHPUnit tests
When you hit a breakpoint while debugging a test, it will be possible to play around with the code right away in the console.
Return value debugging with Xdebug
Xdebug 3.2 will have an extra “return from function” debugging step, in which you can inspect the return value. We plan to add support for it in the next PhpStorm update, too.
Simplify setup experience
Having a debugger on hand during development can save you hours of time. But setting it up can sometimes be tricky.
We won’t be able to solve all the problems with setting up the debugger before 2022.3 comes out, but we’d like to take the first steps and make it easier to start debugging in PhpStorm right away. And to do this, we need your help.
If you have experienced any difficulties setting up the debugger in PhpStorm, please tweet us @phpstorm, post a comment below, or submit a ticket from the IDE by selecting Help | Submit a Bug Report.
We’ll be happy to not only help address your issue, but also to use this feedback to make the PhpStorm debugging experience better for all users!
Enhancements for Psalm / PhpStan
Since the initial announcement, we’ve continued to improve PhpStorm’s support for Psalm and PHPStan annotations. The next release should be no exception as we plan to support the following features:
key-of
/value-of
.- Parsing of Palm template declaration with restrictions.
- Wildcards in PHPDoc for constant enumerations.
Blade and Twig
We’ll continue to improve PhpStorm’s support for popular templating engines.
For Blade, we’d like to add completion for closing directives, highlighting of paired directives, and support for the readonly
directive.
For Twig, we’ll add resolve for functions in templates.
And for both Blade and Twig, we’re going to implement better tracking of unused functions and reduce false positives.
Testing
ParaTest support
You have long asked us to support the parallel running of tests with ParaTest. We’re grateful to the ParaTest community for implementing an API that will enable us to implement this in PhpStorm!
Prophecy support
We added support for Mockery in v2022.2. In the next release, we want to support one more popular framework for testing, Prophecy.
Better support for PHPUnit datasets
We want to make it possible to quickly run a test with a certain dataset with one click on a gutter icon in cases where it’s possible to infer datasets from the source code.
ML-assisted completion for PHP
We introduced machine-learning (ML)-based autocompletion for PHP back in v2019.3. It improves code completion by reordering the elements in the completion popup so that the most relevant items are ranked higher.
It was disabled by default because we did not want robots to take our jobs, but our studies have shown that it improves completion.
Based on our current research, users choose the top item from the completion dropdown list 65% of the time. With ML-based completion, this statistic increases to 75%. So we’ve decided that we’ll turn this setting on by default soon.
Robo task runner integration
A popular task runner for PHP, Robo, will receive extended support in PhpStorm 2022.3, including the following:
- A special tool window, Robo tasks, will be available if a Robo class is present in the project.
- A running configuration for executing Robo tasks will be available inside the context menu invoked from a Robo method.
- Each public method inside a Robo class will have a gutter icon for the respective configurations.
- Public methods in a Robo class won’t be marked as unused.
Already implemented
We have already implemented a bunch of features and fixes for the 2022.3 release. You will be able to try them out in the first EAP build, which is coming in September.
Here are just a few worth mentioning:
- WI-44541 Ability to use external formatters for PHP, e.g. apply PHP CS Fixer rules to the Reformat File Dialog.
- WI-28196 Support
file://
protocol links in phpdoc@link
. - WI-39459 Inject a callable into a string.
- WI-66898 Option to use a selected local PHP interpreter in the terminal.
- WI-22681 WordPress: Add goto/ctrl+click for
get_template_part()
,get_header()
,get_sidebar()
, andget_footer()
. - WI-65445 Support iteration over list array shapes.
You can see the full list of these fixes and features and follow their status in our public issue tracker.
That’s about it. Again, we can’t guarantee that all these improvements will be included in 2022.3, but we’ll do our best to make it happen. Stay tuned for the upcoming start of the Early Access Program for 2022.3!
Please share your feedback with us – tweet us @phpstorm, post a comment below, or submit a ticket from the IDE by going to Help | Submit a Bug Report.