{"id":21587,"date":"2020-02-27T17:48:00","date_gmt":"2020-02-27T17:48:00","guid":{"rendered":"https:\/\/blog.jetbrains.com\/phpstorm\/?p=15428"},"modified":"2020-03-27T19:13:05","modified_gmt":"2020-03-27T19:13:05","slug":"phpstorm-2020-1-eap-5","status":"publish","type":"phpstorm","link":"https:\/\/blog.jetbrains.com\/phpstorm\/2020\/02\/phpstorm-2020-1-eap-5\/","title":{"rendered":"PhpStorm 2020.1 EAP #5"},"content":{"rendered":"<p>The fifth build of the PhpStorm 2020.1 Early Access Program is available!<br \/>\nIn this blog post, you can read about the Bundled Grazie spell checker, updates for \u0441omposer.json support, new inspections for PHP, and styling of @deprecated elements in Structure view.<\/p>\n<p>If you prefer to watch the updates on YouTube, at <a href=\"https:\/\/www.youtube.com\/channel\/UCGp4UBwpTNegd_4nCpuBcow\" target=\"_blank\" rel=\"noopener\">JetBrains channel<\/a> we continue the series of <a href=\"https:\/\/www.youtube.com\/playlist?list=PLQ176FUIyIUb7qSArPCxOkIGX-cqdfoBx\" target=\"_blank\" rel=\"noopener\"><em>What\u2019s Coming in PhpStorm 2020.1<\/em><\/a> videos \u2013 <a href=\"https:\/\/www.youtube.com\/watch?v=KLYFSpu26cM\" target=\"_blank\" rel=\"noopener\">Episode 3<\/a> is already online!<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/phpstorm\/nextversion\/\" target=\"_blank\" rel=\"noopener\"><i class=\"download-icon\"><\/i>Download PhpStorm 2020.1 EAP<\/a><\/p>\n<h2 id=\"bundled_grazie_spell_checker\">Bundled Grazie Spell Checker<\/h2>\n<p>Some time ago we announced a plugin called Grazie. This plugin provides intelligent spelling and grammar checks for texts that you write in the IDE, and it supports over 15 languages, including English, German, Russian, Chinese, and more.<\/p>\n<p>In this EAP build and in the upcoming 2020.1 release, Grazie is bundled by default. To learn more, please read <a href=\"https:\/\/blog.jetbrains.com\/idea\/2019\/11\/meet-grazie-the-ultimate-spelling-grammar-and-style-checker-for-intellij-idea\/\">this blog post<\/a>.<\/p>\n<p>Just like with errors in the code, you can use the quick-fix <kbd>Alt+Enter<\/kbd> to correct typos and mistakes.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-medium wp-image-15432\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-grazie.png\" alt=\"grazie\" width=\"808\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-grazie.gif\" \/><\/p>\n<p>You can enable checking VCS commit messages under <em>Preferences\/Settings | Editor | Proofread | Grammar.<\/em><\/p>\n<blockquote><p>\u2728 The plugin works offline and all checks are performed locally, there is no remote processing at all.<\/p><\/blockquote>\n<p><!--more--><\/p>\n<h2 id=\"updates_for_composer\">Updates for Composer<\/h2>\n<p>In the upcoming PhpStorm 2020.1 release, we\u2019ve <a href=\"https:\/\/blog.jetbrains.com\/phpstorm\/2020\/01\/phpstorm-2020-1-early-access-program-is-now-open\/#composer_support_improvements\">bundled support for composer.json<\/a> which was originally available only via the plugin.<\/p>\n<p>We received great feedback with many interesting ideas. And the plan is to continue improving composer.json support.<\/p>\n<p>In this build, there are a few updates for the <em>scripts<\/em> section to try.<\/p>\n<p><strong>Support for references<\/strong><br \/>\nTo enable script re-use and avoid duplicates, you can call a script from another one by prefixing the command name with <code>@<\/code>. This will be correctly supported in PhpStorm 2020.1.<\/p>\n<p>Type <code>@<\/code> and use code completion (<kbd>Ctrl+Space<\/kbd>) to see the defaults such as <code>@php<\/code>, <code>@composer<\/code> as well as your custom scripts:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-15433\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-composer_scripts_refrerences.png\" alt=\"composer_scripts_refrerences\" width=\"598\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-composer_scripts_refrerences.gif\" \/><\/p>\n<p><strong>Navigation to script references<\/strong><br \/>\nIf you are referencing a custom script, you can press <kbd>Cmd+Click<\/kbd> to go to its definition:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-15435\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-composer_scripts_navigation.png\" alt=\"composer_scripts_navigation\" width=\"598\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-composer_scripts_navigation.gif\" \/><\/p>\n<p><strong>Renaming script references<\/strong><br \/>\nAnd if you decide to rename the script, you only need to do it once thanks to the Rename Refactoring (<kbd>Shift+F6<\/kbd> or <kbd>Ctrl+T, 1<\/kbd>):<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-15437\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-composer_scripts_rename.png\" alt=\"composer_scripts_rename\" width=\"598\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-composer_scripts_rename.gif\" \/><\/p>\n<h2 id=\"miscellaneous_php_improvements\">Miscellaneous PHP Improvements<\/h2>\n<p><strong>Inspection to find redundant ternary expressions<\/strong><br \/>\nHave you seen these trivial ternary operator expressions and thought \u201cwhy\u201d?<\/p>\n<p>Phpstorm will highlight them and by using a quick-fix (<kbd>Alt+Enter<\/kbd>), you can replace them with a simpler expression:<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-15439\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-ternary_redundant.png\" alt=\"ternary_redundant\" width=\"598\" \/><\/p>\n<p><strong>Inspection and quick-fix for pass-by-ref<\/strong><br \/>\nUsing pass-by-reference could lead to unexpected consequences, and this is one of the reasons why Nikita Popov suggested to <a href=\"https:\/\/wiki.php.net\/rfc\/explicit_send_by_ref\" target=\"_blank\" rel=\"noopener\">allow explicit call-sit pass-by-reference annotation<\/a> in PHP.<\/p>\n<p>Meanwhile, PhpStorm 2020.1 will detect when a parameter is marked as passed-by-reference, but this is in fact unnecessary and can be safely removed. Such parameters will be highlighted, and you can use a quick-fix (<kbd>Alt+Enter<\/kbd>) on them.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-15440\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-pass-by-ref_param.png\" alt=\"pass-by-ref_param\" width=\"598\" \/><\/p>\n<p>The same will work for arrays with pass-by-reference used in a <code>foreach<\/code> loop:<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-15441\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-pass-by-ref_array.png\" alt=\"pass-by-ref_array\" width=\"598\" \/><\/p>\n<p><strong id=\"deprecated_elements_in_structure_tree\">Styling of @deprecated elements in the Structure tree view<\/strong><br \/>\nWith the Structure view window (<kbd>Cmd+F12<\/kbd> \/ <kbd>Ctrl+F12<\/kbd>), you can get an overview of the members of any class or just any file. You can start typing here to narrow down the search and quickly navigate to some method.<\/p>\n<p>However, the deprecated members were shown just like all the other ones:<\/p>\n<blockquote class=\"twitter-tweet\">\n<p dir=\"ltr\" lang=\"en\">How about having strikethrough for deprecated methods in <a href=\"https:\/\/twitter.com\/phpstorm?ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"noopener\">@phpstorm<\/a> in Structure list? <a href=\"https:\/\/t.co\/pUOqoWdQqC\" target=\"_blank\">pic.twitter.com\/pUOqoWdQqC<\/a><\/p>\n<p>\u2014 \u0141ukasz Bajsarowicz (@LBajsarowicz) <a href=\"https:\/\/twitter.com\/LBajsarowicz\/status\/1232742850707775490?ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"noopener\">February 26, 2020<\/a><\/p><\/blockquote>\n<p><script src=\"https:\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\"><\/script><\/p>\n<p>In PhpStorm 2020.1, the elements marked with <code>@deprecated<\/code> tag will be displayed with strikethrough style by default.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-15442\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-deprecated_structure_view.png\" alt=\"deprecated_structure_view\" width=\"808\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/02\/phpstorm-deprecated_structure_view.gif\" \/><\/p>\n<h2 id=\"config_files_path_changed\">Config files path changed<\/h2>\n<p>Starting from version 2020.1, the configuration files will be stored in a different folder.<\/p>\n<p>For example, on macOS:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"diff\" data-enlighter-linenumbers=\"false\" data-enlighter-title=\"\">\u2013 ~\/Library\/Preferences\/&lt;product&gt;&lt;version&gt;\r\n+ ~\/Library\/Application Support\/JetBrains\/&lt;product&gt;&lt;version&gt;\r\n\r\n- ~\/Library\/Preferences\/PhpStorm2019.3\r\n+ ~\/Library\/Application Support\/JetBrains\/PhpStorm2020.1\r\n<\/pre>\n<p>For more information on where exactly these files will be stored on your machine, please refer to this article <a href=\"https:\/\/www.jetbrains.com\/help\/phpstorm\/2020.1\/tuning-the-ide.html#default-dirs\" target=\"_blank\" rel=\"noopener\">https:\/\/www.jetbrains.com\/help\/phpstorm\/2020.1\/tuning-the-ide.html#default-dirs<\/a>.<\/p>\n<hr \/>\n<p>The full list of changes in this build, including bug-fixes and improvements, is available in the <a href=\"https:\/\/confluence.jetbrains.com\/display\/PhpStorm\/PhpStorm+201.5985.35+Release+Notes\" target=\"_blank\" rel=\"noopener\"><strong>release notes<\/strong><\/a>.<\/p>\n<ul>\n<li><strong>Important!<\/strong> PhpStorm EAP builds are not fully tested and may be unstable.<\/li>\n<li>You can install an EAP build side by side with a stable PhpStorm version to try out the latest features.<\/li>\n<li>EAP builds are <em>free<\/em> to use but expire 30 days after the build date.<\/li>\n<\/ul>\n<p>Please report any problems you find to our <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/WI\" target=\"_blank\" rel=\"noopener\">issue tracker<\/a>, or by commenting on this post. Your feedback is much appreciated, and the most active EAPers will get special <a href=\"https:\/\/twitter.com\/Mark_Baker\/status\/1221049276362522624\" target=\"_blank\" rel=\"noopener\">limited-edition gifts<\/a> from us!<\/p>\n<p><em>Your JetBrains PhpStorm team<\/em><br \/>\n<em>The Drive to Develop<\/em><\/p>\n","protected":false},"author":869,"featured_media":21589,"comment_status":"open","ping_status":"open","template":"","categories":[826],"tags":[782,192,600,2670],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/phpstorm\/21587"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/phpstorm"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/types\/phpstorm"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/users\/869"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/comments?post=21587"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/phpstorm\/21587\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/media\/21589"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/media?parent=21587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/categories?post=21587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/tags?post=21587"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/cross-post-tag?post=21587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}