PhpStorm 2018.3 EAP 183.4139.30

The new PhpStorm 2018.3 EAP build (183.4139.30) is now available!

This build delivers DQL support, sprintf()/printf() handling improvements, and a performance boost for renaming private properties. It also includes bug fixes and other improvements for PHP, Web, and IntelliJ Platform.

Doctrine Query Language Support

While you can use raw SQL with Doctrine or query builder, the preferred way to make queries is by using DQL. DQL is a query language for your object model. It means that in your queries, you’ll be using PHP classes’ and fields’ names to fetch or update data. Learn more about DQL in the documentation.

In a recent 2018.3 EAP build, we’ve added basic highlighting of DQL strings. In the latest build, DQL support goes further! We’ve added class and fields references in DQL strings, which allows you to navigate to a class or field from your query with the usual Go to declaration command: Cmd+Click and Cmd+B, respectively (Ctrl + Click / Ctrl + B on Windows).

You can also now perform a rename refactoring of classes and fields either from their declaration or from a usage.


This works for associations as well:

DQL relations

For Nowdoc/Heredoc strings, the DQL language will be automatically injected if the marker name is DQL. For simple strings, you can currently add the /** @lang DQL */ annotation. Automatic language injection is coming soon.

Stay tuned and let us know what other features you would like to see to help you work with DQL!

Formatted strings functions improvements

In this build, we’ve improved the way sprintf() and printf() are handled. Now their parameters and placeholders under the caret are highlighted:


In addition, PhpStorm will detect and warn you if an incorrect number of parameters are passed to sprintf() / printf(), that is, if the number of placeholders does not match the number of values:


Private name refactoring improved

As of this build, PhpStorm will by default search only context usages when renaming private properties. This leads to much faster performance. If you still need to search throughout the whole project, you can open the Rename refactoring dialog and enable the new “Search in global scope” option.


Platform updates worth noting

  • SQL Format and Style: Egypt style for INSERT and subqueries (DBE-6798 +31)
  • SQL Refactoring: Introduce/inline table alias (DBE-636 +19)
  • Input freezes after MacOS key-selector on Mojave (JRE-998 +22)
  • Fixed: vue-mixin-decorator doesn’t work in Vue files with TypeScript (WEB-31543 +15)
  • Fixed: Typescript path completion in import doesn’t work when using path mappings (WEB-30796 +13)

See the full list of PHP related bug-fixes and improvements in our issue tracker and the complete release notes.

Download PhpStorm 2018.3 EAP build 183.4139.30 for your platform, or just click Update in your JetBrains Toolbox App. Please do report any bugs you run into, as well as any feature requests that come to mind, to our Issue Tracker. Thanks!

Your JetBrains PhpStorm Team
The Drive to Develop

This entry was posted in Cool Feature, Early Access Program and tagged . Bookmark the permalink.
  • Funivan

    Thanks a lot for the “Private name refactoring improvement”

  • Peter Elmered

    The formatted strings functions improvements does not work well if you concatinate strings like this:

    $messageFormat = 'Text';
    $messageFormat .= ' text %s text%s';
    $messageFormat .= ' text %s.';

    $message = sprintf($messageFormat, ...);

    The check always says it expects 1 parameter with this code.

    • Eugene Morozov

      I don’t get any warnings on this code:
      What PhpStorm version are you using?

      • Peter Elmered

        I have now upgraded to 2018.3.3(I had version 2018.2.6 before), but the problem persists.
        Screenshots of code + error message:

        • Dmitry Tronin

          Please run Code > Inspect. Select file & find this error in Inspection results & share it with us

          • Peter Elmered

            Thanks for the follow-up.
            That inspection view gave me a hint about what was causing this. It turns out the plugin Php Inspections (EA Extended) is causing this. When I disabled that plugin this error disappears. I should probably report this to the plugin author instead. Thank you for you time!
            Link to the plugin:

          • Dmitry Tronin

            Thanks! Yeah, they have their own issue tracker at github – feel free to submit one there.