PhpStorm 2024.3 Is Now Available
This release is a major update that includes support for PHP 8.4, xdebug_notify()
, Pest 3.0, and Pest parallel and mutation testing, and more. If you’re using PhpStorm together with JetBrains AI Assistant, it also got updated with the new AI code completion model, new inline AI prompting, and more.
PHP 8.4 support
PhpStorm 2024.3 comes loaded with new inspections and quick-fixes to help you smoothly upgrade to the feature-rich PHP 8.4, set to be released on November 21, 2024. Discover its features in a new video by Brent Roose, our developer advocate:
Below is a brief overview of how the new PHP 8.4 features are supported in your PhpStorm workflow. As usual, you can try the new features by setting the project language level to PHP 8.4. You can do so in the language level settings (PHP | PHP Language Level), from the status bar at the bottom of your IDE, or by specifying the requirement in composer.json.
Property hooks
One of the biggest changes in modern PHP history, property hooks are designed to eliminate boilerplate getters and setters by allowing you to implement get
and set
hooks for properties.
For property hooks (including the property hooks inside promoted properties), PhpStorm provides:
- A quick-fix for replacing getters and setters with
get
andset
property hooks.
- An intention action for adding property hooks to properties.
- Code completion for the get and set keywords with the insertion of property hook bodies.
- The ability to generate
get
andset
hooks for a property via a Generate action similar to Generate | Getters and Setters.
- Automatic detection of property hooks that can be converted into their short-hand notations and a quick-fix for converting them.
- Checks to ensure the proper usage of the property hooks syntax and logic, including:
- Property hook implementation checks in class hierarchies for abstract properties.
- Hooked properties that cannot be accessed, read, or written to by reference (
&get
). - Incompatible return types in property hooks.
- Improper usage of property hooks with final properties.
- Unused parameters within
set
property hooks. set
hook’s parameter type not matching the parameter type declared at the property level.- Incompatible return types within
get
hooks. - Detection of the disallowed
readonly
hooked properties.
Asymmetric visibility
Asymmetric visibility allows a typed property to have separate visibility defined for read and write operations.
PhpStorm 2024.3 helps ensure the proper implementation of asymmetric visibility scopes in your code by providing checks and quick-fixes for:
- Redundant asymmetric visibility modifiers.
- Attempts to make a property’s
set
visibility wider than the main (get
) visibility. - Redundant
final
modifiers forprivate (set)
properties. - Attempts to narrow property visibility in inherited properties.
- Attempts to modify an asymmetric visibility property outside of the
set
visibility scope.
New array functions
You can use PhpStorm 2024.3 to convert foreach
loops to the newly added array_find()
, array_find_key()
, array_any()
, and array_all()
PHP 8.4 functions.
Note that, in PhpStorm, you can run a specific inspection on the project’s whole codebase and apply the fix right from the Problems tool window. Go to Code | Analyze Code | Run Inspection by Name and search for the inspection you need.
new
without parentheses
PhpStorm 2024.3 supports dropping parentheses around the new
expression in constructions of the (new MyClass())->method()
type.
You can view the full list of PHP 8.4 inspections added to PhpStorm in the 2024.3 release by going to Settings | Editor | Inspections and typing “PHP 8.4” in the search field to filter the list.
AI Assistant Plugin
Please note that AI Assistant features are only available with an AI Pro subscription or in the trial version.
JetBrains’ new code completion model for PHP
We’ve significantly improved the quality and reduced the latency of our AI code completion for PHP. These enhancements are powered by Mellum – JetBrains’ new proprietary large language model (LLM) optimized for faster, smarter, and more contextually aware cloud code completion.
For more information about JetBrains’ new LLM, see this blog post.
Syntax highlighting for suggested code
Inline code completion suggestions now come with syntax highlighting, improving their readability.
Incremental acceptance of code suggestions
Multiline code suggestions can now be accepted either all at once (by pressing Tab) or incrementally – word by word (Ctrl+→ for Windows or ⌥→ for macOS) or line by line (End for Windows or ⌘Сmd+→ for macOS).
Inline AI prompts
With new inline AI prompting, AI Assistant now detects and processes requests in natural language as you type them directly in the editor. It instantly interprets the requests and generates suggested code without you having to complete any extra steps.
PhpStorm leaves a purple mark in the gutter next to lines changed by AI Assistant, so you can easily see what has been updated. If you don’t like a suggestion, you can adjust the initial prompt by clicking on the purple block in the gutter or pressing Ctrl+/ (Windows/Linux) or ⌘/ (macOS).
Title and description generation for pull and merge requests
AI Assistant now helps generate accurate titles and descriptions for your pull and merge requests directly from the IDE, streamlining your workflow and ensuring your descriptions are clear and concise.
SQL error handling by AI Assistant
A couple of useful new actions for handling SQL query execution errors with AI Assistant are accessible in the error message area. Explain with AI opens the AI chat with a prompt automatically sent and AI Assistant’s response with an explanation of the error. The Fix with AI action generates a fix for the query execution error in the editor.
Read about all the updates to JetBrains AI Assistant.
Debugging
xdebug_notify()
support
To further enhance your PHP debugging experience, PhpStorm now provides a structured way to handle the output sent from the xdebug_notify()
function.
Introduced in Xdebug 3.1, xdebug_notify()
calls allow you to selectively output variables to the debugging console in PhpStorm.
Laravel ecosystem
Laravel Herd’s PHP interpreter in PhpStorm
For the Laravel developers using Laravel Herd, PhpStorm 2024.3 now automatically detects the path to the currently used Laravel Herd’s PHP executable on your machine. To use this interpreter in PhpStorm, go to the CLI interpreter settings (PHP | CLI interpreter | … ), and in the CLI Interpreters dialog that opens, select the PHP executable from the list of pre-configured options.
Pest framework enhancements
PhpStorm 2024.3 significantly improves the Pest testing framework experience for Laravel developers. We’ve implemented full support for Pest 3.0 and the ability to run parallel and mutation tests using Pest right from your IDE.
Mutation testing with Pest 3.0
The recently released Pest 3.0 introduced mutation testing, which makes small changes to the code to track whether the tests can catch them.
You can trigger Pest’s Run Tests (Pest) with Mutation option in PhpStorm 2024.3 like any other test option – right from the editor, from the Project tool window, or via a run/debug configuration – and use the dedicated Pest Mutation tool window to inspect the test results.
Just make sure that the PHP interpreter used in your IDE has Xdebug 3.0+ installed as well.
For details, refer to the PhpStorm documentation.
Parallel testing with Pest
In PhpStorm 2024.3, you no longer need to switch to the terminal to run Pest tests in parallel mode. Just navigate to the test file and select Run Tests (Pest) in Parallel from the in-editor gutter icon, from the context menu in the Project tool window, or via a run/debug configuration.
Version control systems
Resolution of import statement merge conflicts
PhpStorm can now automatically resolve merge conflicts in import statements. To enable this feature, select the Resolve conflicts in import statements option in the merge dialog under the gear icon, or go to Settings | Tools | Diff & Merge and select Automatically resolve conflicts in import statements.
Updates to Find in Files
The Find in Files feature has been enhanced with a new search scope, Project Files Excluding Git-Ignored. This option excludes any files ignored in .gitignore
files from your search results, helping you focus only on the relevant code when searching through your project.
Option to disable background pre-commit checks
You can now manage background checks during the commit process with a new Run advanced checks after a commit is done option under Settings | Version Control | Commit. This setting lets you decide if tests and inspections should run after making a commit. If you want these checks to be completed before the commit happens, simply disable it.
Branch name on the Welcome screen
The Welcome screen now shows the branch name for projects with the same name, helping you stay organized when handling multiple project versions and allowing you to easily switch between working directories.
Database tools
Fragment introspection and smart refresh for MySQL and MariaDB
PhpStorm now supports fragment introspection. Previously, the introspector could perform only a full introspection of schemas in the MySQL or MariaDB databases but not refresh the metadata of a single object. Every time a DDL statement was executed in the console and that execution could modify an object in the database schema, the IDE would start a full introspection of the entire schema. This was time-consuming and often disrupted the workflow.Now, PhpStorm can analyze a DDL statement, determine which objects could have been affected by it, and refresh only those objects. If you select a single item in Database Explorer and call the Refresh action, only one object will be refreshed, instead of the entire schema as it was before.
Inspection for an excessive number of JOIN
clauses
In certain cases, running a query that contains an excessive number of JOIN
clauses is not recommended due to performance degradation. The editor can now identify and highlight such queries. You can enable this inspection in the IDE settings. To do so, navigate to Editor | Inspections, expand the SQL section, and select Excessive JOIN count.
Floating pagination toolbar
To make grid paging more noticeable in our data editor, we have moved the control for it from the toolbar to the bottom center of the data editor.
Frontend
Cleaner search results for directories
PhpStorm now excludes node_modules
results by default when using Find in Files in project directories, reducing clutter from irrelevant files. You can restore the previous behavior by enabling the Search in library files when “Directory” is selected in Find in Files option under Settings | Advanced Settings.
Improved framework component navigation and renaming
We’ve enhanced in-editor hints for Vue, Svelte, and Astro components. The Show component usages action now finds usages in both imports and markup templates. We’ve also added a Show Component Usages filter to exclude component usages when searching for regular file references. The Rename refactoring has also been updated with an option to include usages when renaming a component file.
Color preview for Tailwind CSS classes
The color preview for Tailwind CSS classes is now shown inline in the editor, making it easier to tell the colors apart. We’ve added support for the textDocument/documentColor
method from the Language Server Protocol (LSP), so all LSP-based plugins now offer this functionality out of the box.
Improvements for Angular
For projects with Angular 19, PhpStorm now defaults to standalone mode for components, directives, and pipes. Quick-fixes have been added to help convert between standalone and non-standalone components. Unused standalone imports can be automatically removed during code reformatting or via a new inspection. Support for the @let
syntax has also been improved.
UI
Highlighting for all occurrences of selected text
By default, PhpStorm will now automatically highlight all instances of the text you select within a file. This makes it easier to track where the selected text appears throughout your code. If you prefer the previous behavior, you can disable this feature in Settings | Editor | General | Appearance.
You can find the full list of changes included in PhpStorm 2024.3 on the release notes page.
That’s all for today. We hope you’ll enjoy the latest enhancement to PhpStorm!
Here are some helpful quick links:
Please report any bugs to our issue tracker. Your feedback is extremely valuable to us!