Hello -,
PHP extension is getting exciting new features, improvements, and fixes! Welcome to our newsletter, and thank you for using our extension.
IntelliSense
The editor is getting more fine-tuned features, minor adjustments, nice-to-have features, new code diagnostics, and fixes. Please see the following list for some of them:
- Detecting Laravel services improved.
- Completing
declare and declare(strict_types=1); after tag.
- Now it's possible to
Ctrl+Click (or go to with F12) on @inheritdoc to navigate to base Doc Comment directly. #897
-
null specified as Doc Comment @param type is reported as invalid.
-
true pseudo-type correctly handled within union types.
- Code completion and tooltips in
trait adaptation blocks have been implemented. (#582)
IntelliSense and phpstorm.meta.php
Supporting .phpstorm.meta.php with expectedArgments() and argumentsSet() now.

IntelliSense & @phpstan-type and @psalm-type
Since now, we have basic support for local-type aliasing.
IntelliSense & Traits with Generics
Newly, trait use can be annotated with @use doc comment to specify the trait's generic arguments (#840), i.e.:
class MyClass {
/** @use MyTrait */
use MyTrait;
}
IntelliSense & static Type
We have re-implemented the internals and improved type analysis for various cases involving the use of static and $this within traits, protected properties, and class inheritance in general. Moreover, generic arguments and trait members are resolved better with more inherited type information (#931).
Inlay Hints Improvements
We've added an option to show return type inlay hint only for named functions, not for anonymous functions and arrow functions (#326).
Refactoring
Sort Uses on Save aka Organize Imports
We have added support for VS Code's "organize imports" command and eventual "editor.codeActionsOnSave" setting allowing you to organize imports (aka remove unused uses) when saving documents automatically.

The following setting works for sorting and organizing use statements on save:
{
"editor.codeActionsOnSave": { "source.organizeImports": true },
}
Add Missing PHPDoc Code Action
The Add Missing PHPDoc code action inserts the doc comment as a snippet (#157(comment)). This replaces template variables and allows you to type into placeholders.
More Code Actions
- PHPDoc
@see and @uses is recognized during rename refactoring, find all references, and highlight occurrences.
- Unused
use check works even if problems setting is turned off.
-
Namespace import for any simple class name. We have code action suggestions to import a namespace or fully qualify the class name if there are more classes with the same name.
PHPUnit and Test Explorer
PHPUnit Tests & Continuous Run
Newly it is possible to run tests continuously. The watch icon in Testing panel allows us to keep all the tests, test suites, or just specific test cases always up-to-date. (#1479)
Test Explorer and ParaTest
This latest update allows running ParaTest in the same way as PHPUnit tests. To do so:
Other Test Explorer Improvements
The Test Explorer looks and watches for any PHPUnit XML configuration file matching glob pattern **/phpunit*.xml or **/phpunit.xml.dist (outside the vendor folder) #313. This allows having multiple configuration files in the same directory with custom names.

Additionally, we have fixed:
- Executing all tests within a configuration file.
- Executing all tests within a single test suite.
- Correct Xdebug directives so it won't cause unnecessary warnings when debugging tests.
Composer "composer.workingPath" Setting
Thanks to the feedback #909, we've added setting "composer.workingPath" where users can specify the relative path for the composer.json and vendor folders.
Other Improvements
- Tons of fixes and performance improvements.
- Several memory issues were fixed.
- Code completion of named arguments completes the
: at the end. (#1600)
- Code completion of hinted array keys within single quotes. (#1600)
- Completion triggered after typing SPACE after
instanceof keyword.
- Methods named
new() are handled correctly in mouse hover and code completion.
-
match, fn, and interface are not reported as syntax errors when within a qualified name (PHP 8.0+).
- PHP 8.2 standalone
true, false, and null type names. (#338)
- Fixed a few type inferring cases.
- Fixed reporting functions annotated with
@ignore tag as unknown.
- Type inferring in the context of
is_a() analyzed correctly.
- Less falsy warnings for non-static methods called statically in case there is
__callStatic() magic method.
- New quick refactorings through code actions.
- Updated integrated PHP manual and localizations.
- and more!
|