Author: Sergey Panteleev (saundefined)
Date: 2025-10-01T13:10:35+03:00

Commit: 
https://github.com/php/web-php/commit/ec7b3efb5188537d784dd173a20edc9beb562c8c
Raw diff: 
https://github.com/php/web-php/commit/ec7b3efb5188537d784dd173a20edc9beb562c8c.diff

wip

Changed paths:
  M  releases/8.5/languages/en.php
  M  releases/8.5/release.inc


Diff:

diff --git a/releases/8.5/languages/en.php b/releases/8.5/languages/en.php
index bb9fa77208..5d0dca4f36 100644
--- a/releases/8.5/languages/en.php
+++ b/releases/8.5/languages/en.php
@@ -11,9 +11,18 @@
     'url_parsing_api_title' => 'Add RFC 3986 and WHATWG URL compliant API',
     'url_parsing_api_description' => '<code>Uri\UriException</code>, 
<code>Uri\InvalidUriException</code>, <code>Uri\UriComparisonMode</code>,
     <code>Uri\Rfc3986\Uri</code>, <code>Uri\WhatWg\InvalidUrlException</code>, 
<code>Uri\WhatWg\UrlValidationErrorType</code>, 
<code>Uri\WhatWg\UrlValidationError</code>, and <code>Uri\WhatWg\Url</code> are 
now available.',
+    'clone_with_title' => 'Clone with v2',
+    'no_discard_title' => 'New <code>#[\NoDiscard]</code> Attribute',
+    'fcc_in_const_expr_title' => 'First Class Callables in constant 
expressions',
+    'curl_share_persistence_improvement_title' => 'Persistent cURL share 
handle improvement',
+    'array_first_last_title' => 'New <code>array_first()</code> and 
<code>array_last()</code> functions',
+    'final_promotion_title' => 'Final Property Promotion',
+    'attributes_on_constants_title' => 'Attributes on Constants',
+    'override_properties_title' => 'Attribute <code>#[\Override]</code> 
extended to target properties',
+    'static_aviz_title' => 'Asymmetric Visibility for Static Properties',
+    'deprecated_traits_title' => 'Attribute <code>#[\Deprecated]</code> 
available for traits',
 
     'new_classes_title' => 'New Classes, Interfaces, and Functions',
-    'new_core_attributes' => '<code>#[\NoDiscard]</code> and 
<code>#[\DelayedTargetValidation]</code> attributes',
 
     'bc_title' => 'Deprecations and backward compatibility breaks',
 
diff --git a/releases/8.5/release.inc b/releases/8.5/release.inc
index 4afcc2449a..94f0f9cedc 100644
--- a/releases/8.5/release.inc
+++ b/releases/8.5/release.inc
@@ -36,7 +36,76 @@ common_header(message('common_header', $lang));
 
     <section class="php8-section center">
         <div class="php8-compare">
-            <h2 class="php8-h2" id="property_hooks">
+            <h2 class="php8-h2" id="url_parsing_api">
+                <?= message('url_parsing_api_title', $lang) ?>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/url_parsing_api";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP &lt; 8.5</div>
+                    <div class="php8-code phpcode">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+$components = parse_url("https://php.net/releases/8.5/en.php";);
+
+var_dump($components['host']); // string(7) "php.net"
+PHP
+
+                        ); ?>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents" 
style="display: table;">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8.5</div>
+                    <div class="php8-code phpcode" style="display: 
table-cell;">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+$uri = new Uri\Rfc3986\Uri("https://php.net/releases/8.5/en.php";);
+
+var_dump($uri->getHost()); // string(7) "php.net"
+PHP
+                        ); ?>
+                    </div>
+                </div>
+            </div>
+            <div class="php8-compare__content">
+                <?= message('url_parsing_api_description', $lang) ?>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="clone_with">
+                <?= message('clone_with_title', $lang) ?>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/clone_with_v2";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP &lt; 8.5</div>
+                    <div class="php8-code phpcode">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+// TODO
+PHP
+
+                        ); ?>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents" 
style="display: table;">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8.5</div>
+                    <div class="php8-code phpcode" style="display: 
table-cell;">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+// TODO
+PHP
+                        ); ?>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="pipe_operator">
                 <?= message('pipe_operator_title', $lang) ?>
                 <a class="php8-rfc" 
href="https://wiki.php.net/rfc/pipe-operator-v3";>RFC</a>
             </h2>
@@ -70,8 +139,8 @@ $input = ' Some kind of string. ';
 
 $output = $input
     |> trim(...)
-    |> fn (string $string) => str_replace(' ', '-', $string)
-    |> fn (string $string) => str_replace(['.', '/', '…'], '', $string)
+    |> (fn (string $string) => str_replace(' ', '-', $string))
+    |> (fn (string $string) => str_replace(['.', '/', '…'], '', $string))
     |> strtolower(...);
 PHP
                         ); ?>
@@ -81,9 +150,9 @@ PHP
         </div>
 
         <div class="php8-compare">
-            <h2 class="php8-h2" id="property_hooks">
-                <?= message('url_parsing_api_title', $lang) ?>
-                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/url_parsing_api";>RFC</a>
+            <h2 class="php8-h2" id="no_discard">
+                <?= message('no_discard_title', $lang) ?>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/marking_return_value_as_important";>RFC</a>
             </h2>
             <div class="php8-compare__main">
                 <div class="php8-compare__block example-contents">
@@ -91,9 +160,38 @@ PHP
                     <div class="php8-code phpcode">
                         <?php highlight_php_trimmed(
                                 <<<'PHP'
-$components = parse_url("https://php.net/releases/8.5/en.php";);
+// TODO
+PHP
 
-var_dump($components['host']); // string(7) "php.net"
+                        ); ?>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents" 
style="display: table;">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8.5</div>
+                    <div class="php8-code phpcode" style="display: 
table-cell;">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+// TODO
+PHP
+                        ); ?>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="fcc_in_const_expr">
+                <?= message('fcc_in_const_expr_title', $lang) ?>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/fcc_in_const_expr";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP &lt; 8.5</div>
+                    <div class="php8-code phpcode">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+// TODO
 PHP
 
                         ); ?>
@@ -105,16 +203,306 @@ PHP
                     <div class="php8-code phpcode" style="display: 
table-cell;">
                         <?php highlight_php_trimmed(
                                 <<<'PHP'
-$uri = new Uri\Rfc3986\Uri("https://php.net/releases/8.5/en.php";);
+// TODO
+PHP
+                        ); ?>
+                    </div>
+                </div>
+            </div>
+        </div>
 
-var_dump($uri->getHost()); // string(7) "php.net"
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="curl_share_persistence_improvement">
+                <?= message('curl_share_persistence_improvement_title', $lang) 
?>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/curl_share_persistence";>RFC</a>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/curl_share_persistence_improvement";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP &lt; 8.5</div>
+                    <div class="php8-code phpcode">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+// TODO
+PHP
+
+                        ); ?>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents" 
style="display: table;">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8.5</div>
+                    <div class="php8-code phpcode" style="display: 
table-cell;">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+// TODO
 PHP
                         ); ?>
                     </div>
                 </div>
             </div>
             <div class="php8-compare__content">
-                <?= message('url_parsing_api_description', $lang) ?>
+                New <code>CurlSharePersistentHandle</code> class, 
<code>curl_multi_get_handles()</code>, 
<code>curl_share_init_persistent()</code> functions are available.
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="array_first_last">
+                <?= message('array_first_last_title', $lang) ?>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/array_first_last";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP &lt; 8.5</div>
+                    <div class="php8-code phpcode">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+$versions = ['PHP 8.1', 'PHP 8.2', 'PHP 8.3', 'PHP 8.4', 'PHP 8.5'];
+
+var_dump($versions[array_key_first($versions)]); // string(7) "PHP 8.1"
+PHP
+
+                        ); ?>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents" 
style="display: table;">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8.5</div>
+                    <div class="php8-code phpcode" style="display: 
table-cell;">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+$versions = ['PHP 8.1', 'PHP 8.2', 'PHP 8.3', 'PHP 8.4', 'PHP 8.5'];
+
+var_dump(array_first($versions)); // string(7) "PHP 8.1"
+PHP
+                        ); ?>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="final_promotion">
+                <?= message('final_promotion_title', $lang) ?>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/final_promotion";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP &lt; 8.5</div>
+                    <div class="php8-code phpcode">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+class PhpVersion {
+    public function __construct(
+        final public string $version = 'PHP 8.4'
+    ) {
+
+    }
+}
+
+var_dump(new PhpVersion()->version); // Fatal error: Cannot use the final 
modifier on a parameter
+PHP
+
+                        ); ?>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents" 
style="display: table;">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8.5</div>
+                    <div class="php8-code phpcode" style="display: 
table-cell;">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+class PhpVersion {
+    public function __construct(
+        final public string $version = 'PHP 8.5'
+    ) {
+
+    }
+}
+
+var_dump(new PhpVersion()->version); // string(7) "PHP 8.5"
+PHP
+                        ); ?>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="attributes_on_constants">
+                <?= message('attributes_on_constants_title', $lang) ?>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/attributes-on-constants";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP &lt; 8.5</div>
+                    <div class="php8-code phpcode">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+<?php
+
+#[NewFeatures]
+const VERSION = '8.4';
+
+var_dump(VERSION); // Parse error: syntax error, unexpected token "const"
+PHP
+
+                        ); ?>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents" 
style="display: table;">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8.5</div>
+                    <div class="php8-code phpcode" style="display: 
table-cell;">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+<?php
+
+#[NewFeatures]
+const VERSION = '8.5';
+
+var_dump(VERSION); // string(3) "8.5"
+PHP
+                        ); ?>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="override_properties">
+                <?= message('override_properties_title', $lang) ?>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/override_properties";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP &lt; 8.5</div>
+                    <div class="php8-code phpcode">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+// TODO
+PHP
+
+                        ); ?>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents" 
style="display: table;">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8.5</div>
+                    <div class="php8-code phpcode" style="display: 
table-cell;">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+// TODO
+PHP
+                        ); ?>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="static_aviz">
+                <?= message('static_aviz_title', $lang) ?>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/static-aviz";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP &lt; 8.5</div>
+                    <div class="php8-code phpcode">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+class PhpVersion
+{
+    private static string $version = '8.4';
+
+    public function getVersion(): string
+    {
+        return self::$version;
+    }
+
+    public function increment(): void
+    {
+        [$major, $minor] = explode('.', self::$version);
+        $minor++;
+        self::$version = "{$major}.{$minor}";
+    }
+}
+PHP
+
+                        ); ?>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents" 
style="display: table;">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8.5</div>
+                    <div class="php8-code phpcode" style="display: 
table-cell;">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+class PhpVersion
+{
+    public static private(set) string $version = '8.5';
+
+    public function increment(): void
+    {
+        [$major, $minor] = explode('.', self::$version);
+        $minor++;
+        self::$version = "{$major}.{$minor}";
+    }
+}
+PHP
+                        ); ?>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="deprecated_traits">
+                <?= message('deprecated_traits_title', $lang) ?>
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/deprecated_traits";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP &lt; 8.5</div>
+                    <div class="php8-code phpcode">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+/**
+* @deprecated 8.4 use UsePhpVersion instead
+*/
+trait UseVersion
+{
+    public function getVersion(): string
+    {
+        return '8.4';
+    }
+}
+PHP
+
+                        ); ?>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents" 
style="display: table;">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8.5</div>
+                    <div class="php8-code phpcode" style="display: 
table-cell;">
+                        <?php highlight_php_trimmed(
+                                <<<'PHP'
+#[\Deprecated(
+    message: "use UsePhpVersion instead",
+    since: "8.5",
+)]
+trait UseVersion
+{
+    public function getVersion(): string
+    {
+        return '8.5';
+    }
+}
+PHP
+                        ); ?>
+                    </div>
+                </div>
             </div>
         </div>
     </section>
@@ -124,7 +512,13 @@ PHP
             <h2 class="php8-h2" id="other_new_things"><?= 
message('new_classes_title', $lang) ?></h2>
             <div class="php8-compare__content php8-compare__content--block">
                 <ul>
-
+                    <li>New <code>#[\DelayedTargetValidation]</code> attribute 
is available</li>
+                    <li>New <code>get_error_handler()</code>, 
<code>get_exception_handler()</code> functions, and 
<code>Closure::getCurrent</code> method are available.</li>
+                    <li>New <code>Dom\Element::getElementsByClassName()</code> 
and <code>Dom\Element::insertAdjacentHTML()</code> methods are available.</li>
+                    <li>New <code>enchant_dict_remove_from_session()</code> 
and <code>enchant_dict_remove()</code> functions are available.</li>
+                    <li>New <code>grapheme_levenshtein()</code> function is 
available.</li>
+                    <li>New 
<code>opcache_is_script_cached_in_file_cache()</code> function is 
available.</li>
+                    <li>New <code>ReflectionConstant::getFileName()</code>, 
<code>ReflectionConstant::getExtension()</code>, 
<code>ReflectionConstant::getExtensionName()</code>, 
<code>ReflectionConstant::getAttributes()</code>, and 
<code>ReflectionProperty::getMangledName()</code> methods are available.</li>
                 </ul>
             </div>
         </div>

Reply via email to