What’s New in PhpStorm 2024.3

The highlights of this version include:

  • PHP 8.4 support
  • AI Assistant improvements
  • xdebug_notify() support
  • Laravel Herd’s PHP interpreter

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. Below is a brief overview of how the new PHP 8.4 features are supported in your PhpStorm workflow.

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 and set 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 and set 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.

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 for private (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.

new without parentheses

PhpStorm 2024.3 supports dropping parentheses around the new expression in constructions of the (new MyClass())->method() type.

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 blogpost .

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+→) or line by line (End).

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+/.

Improved context management

In this update, we’ve made managing the context AI Assistant takes into account with its suggestions more transparent and intuitive. A revamped UI lets you view and manage every element included as context, providing full visibility and control. The open file and any selected code within it are now automatically added to the context, and you can easily add or remove files as needed, customizing the context to fit your workflow. Additionally, you can attach project-wide instructions to guide AI Assistant’s responses throughout your codebase.

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, 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.