{"id":509838,"date":"2024-09-23T17:16:32","date_gmt":"2024-09-23T16:16:32","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=phpstorm&#038;p=509838"},"modified":"2024-10-15T19:35:16","modified_gmt":"2024-10-15T18:35:16","slug":"phpstorm-2024-3-early-access-program-is-now-open","status":"publish","type":"phpstorm","link":"https:\/\/blog.jetbrains.com\/fr\/phpstorm\/2024\/09\/phpstorm-2024-3-early-access-program-is-now-open","title":{"rendered":"PhpStorm 2024.3 Early Access Program Is Now Open"},"content":{"rendered":"\n<p>We\u2019re opening the Early Access Program (EAP) for the PhpStorm 2024.3 that will have native support of PHP 8.4. Join the program and try out some of the newest additions and improvements today!<\/p>\n\n\n    <div class=\"buttons\">\n        <div class=\"buttons__row\">\n                                                <a href=\"https:\/\/www.jetbrains.com\/phpstorm\/nextversion\/\" class=\"btn\" target=\"\" rel=\"noopener\">Download PhpStorm 2024.3 EAP<\/a>\n                                                    <\/div>\n    <\/div>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\"><strong>New classes without parentheses<\/strong><\/h2>\n\n\n\n<p>PHP 8.4 introduces a new syntax improvement allowing instantiation of classes without parentheses. PhpStorm now fully supports this feature, making it easier for developers to adopt this cleaner, more concise syntax.<\/p>\n\n\n\n<p>Before:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">$request = (new Request())-&gt;withMethod(&#039;GET&#039;)-&gt;withUri(&#039;\/hello-world&#039;);<\/pre>\n\n\n\n<p>After:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">$request = new Request()-&gt;withMethod(&#039;GET&#039;)-&gt;withUri(&#039;\/hello-world&#039;);<\/pre>\n\n\n\n<p>This automatic conversion makes it faster to upgrade existing code to PHP 8.4\u2019s new syntax style.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New array functions<\/h2>\n\n\n\n<p>Another exciting addition in PHP 8.4 is a set of new array functions: <code>array_find()<\/code>, <code>array_find_key()<\/code>, <code>array_any()<\/code>, and <code>array_all()<\/code>. PhpStorm now offers inspections that can identify <code>foreach<\/code> loops in your code and automatically suggest replacements with the new array functions. This helps you modernize your code with minimal effort.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>array_find<\/strong><\/h3>\n\n\n\n<p>Before:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">function a(array $array, callable $callback): mixed {\n    foreach ($array as $key =&gt; $value) {\n        if ($callback($value, $key)) {\n            return $value;\n        }\n    }\n    return null;\n}<\/pre>\n\n\n\n<p>After:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">function a(array $array, callable $callback): mixed {\n    return array_find($array, function ($value, $key) use ($callback) {\n        return $callback($value, $key);\n    });\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>array_find_key<\/strong><\/h3>\n\n\n\n<p>Before:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">function a(array $array, callable $callback): mixed {\n    foreach ($array as $key =&gt; $value) {\n        if ($callback($value, $key)) {\n            return $key;\n        }\n    }\n    return null;\n}<\/pre>\n\n\n\n<p>After:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">function a(array $array, callable $callback): mixed {\n    return array_find_key($array, function ($value, $key) use ($callback) {\n        return $callback($value, $key);\n    });\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>array_any<\/strong><\/h3>\n\n\n\n<p>Before:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">function a(array $array, callable $callback): mixed {\n    foreach ($array as $key =&gt; $value) {\n        if ($callback($value, $key)) {\n            return true;\n        }\n    }\n    return false;\n}<\/pre>\n\n\n\n<p>After:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">function a(array $array, callable $callback): mixed {\n    return array_any($array, function ($value, $key) use ($callback) {\n        return $callback($value, $key);\n    });\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>array_all<\/strong><\/h3>\n\n\n\n<p>Before:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">function a(array $array, callable $callback): mixed {\n    foreach ($array as $key =&gt; $value) {\n        if ($callback($value, $key)) {\n            return false;\n        }\n    }\n    return true;\n}<\/pre>\n\n\n\n<p>After:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">function a(array $array, callable $callback): mixed {\n    return array_all($array, function ($value, $key) use ($callback) {\n        return !$callback($value, $key);\n    });\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Property hooks support<\/h2>\n\n\n\n<p>We\u2019ve added support for the new property hooks introduced in PHP 8.4. You now get proper keyword completion and error highlighting with relevant quick fix suggestions.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&lt;?php\n\nclass User\n{\n    public string $name {\n        set {\n            $this-&gt;name = $value;\n        }\n        get {\n            return $this-&gt;name;\n        }\n    }\n}\n\n$user = new User();\n$user-&gt;name = &#039;foo&#039;;\nvar_dump($user-&gt;name);<\/pre>\n\n\n\n<p>With these new features, PhpStorm continues to provide top-tier support for the latest PHP improvements, ensuring a more streamlined and efficient development experience. <\/p>\n\n\n    <div class=\"buttons\">\n        <div class=\"buttons__row\">\n                                                <a href=\"https:\/\/www.jetbrains.com\/phpstorm\/nextversion\/\" class=\"btn\" target=\"\" rel=\"noopener\">Download PhpStorm 2024.3 EAP<\/a>\n                                                    <\/div>\n    <\/div>\n\n\n\n\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">About Early Access Program (EAP)<\/h2>\n\n\n\n<p>If you&#8217;re not familiar with how our Early Access Program (EAP) operates, here&#8217;s a quick overview:<\/p>\n\n\n\n<ol>\n<li>We release new EAP builds weekly, giving you a sneak peek at upcoming features.<\/li>\n\n\n\n<li>EAP builds are completely free to use and do not require a license.<\/li>\n\n\n\n<li>You can install the EAP version alongside your stable PhpStorm installation, so there&#8217;s no need to uninstall your current version.<\/li>\n\n\n\n<li>The most convenient way to access EAP builds and keep both your stable and EAP versions up-to-date is by using <a href=\"https:\/\/www.jetbrains.com\/toolbox-app\/\" target=\"_blank\" rel=\"noopener\">our Toolbox App<\/a>.<\/li>\n\n\n\n<li>Alternatively, you can download EAP builds from the <a href=\"https:\/\/www.jetbrains.com\/phpstorm\/nextversion\/\" target=\"_blank\" rel=\"noopener\">EAP page<\/a> or set up your IDE to automatically receive updates by selecting <em>Check IDE Updates for the Early Access Program<\/em> under <em>Settings\/Preferences | Appearance &amp; Behavior | System Settings | Updates<\/em>.<\/li>\n<\/ol>\n","protected":false},"author":1415,"featured_media":509857,"comment_status":"closed","ping_status":"closed","template":"","categories":[826],"tags":[8574,600],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/phpstorm\/509838"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/phpstorm"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/phpstorm"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/1415"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=509838"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/phpstorm\/509838\/revisions"}],"predecessor-version":[{"id":513031,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/phpstorm\/509838\/revisions\/513031"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/509857"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=509838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=509838"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=509838"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=509838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}