From 02acaba6491bd7db8ee0b3fb8f095676a2bb22f6 Mon Sep 17 00:00:00 2001 From: Ayesh Karunaratne Date: Tue, 21 Oct 2025 21:21:23 +0700 Subject: [PATCH] Add PHP 8.5 Release page --- images/php8/logo_php8_5.svg | 9 + images/php8/php_8_5-animated.svg | 9 + include/layout.inc | 8 +- releases/8.5/common.php | 79 ++++ releases/8.5/en.php | 5 + releases/8.5/es.php | 5 + releases/8.5/fr.php | 5 + releases/8.5/index.php | 13 + releases/8.5/ja.php | 5 + releases/8.5/languages/en.php | 98 ++++ releases/8.5/languages/es.php | 58 +++ releases/8.5/languages/fr.php | 57 +++ releases/8.5/languages/ja.php | 58 +++ releases/8.5/languages/nl.php | 57 +++ releases/8.5/languages/pt_BR.php | 58 +++ releases/8.5/languages/ru.php | 58 +++ releases/8.5/languages/tr.php | 57 +++ releases/8.5/languages/uk.php | 58 +++ releases/8.5/languages/zh.php | 65 +++ releases/8.5/nl.php | 6 + releases/8.5/pt_BR.php | 5 + releases/8.5/release.inc | 369 +++++++++++++++ releases/8.5/ru.php | 5 + releases/8.5/snippets.php | 266 +++++++++++ releases/8.5/tr.php | 5 + releases/8.5/uk.php | 5 + releases/8.5/zh.php | 5 + styles/php85.css | 746 +++++++++++++++++++++++++++++++ 28 files changed, 2170 insertions(+), 4 deletions(-) create mode 100644 images/php8/logo_php8_5.svg create mode 100644 images/php8/php_8_5-animated.svg create mode 100644 releases/8.5/common.php create mode 100644 releases/8.5/en.php create mode 100644 releases/8.5/es.php create mode 100644 releases/8.5/fr.php create mode 100644 releases/8.5/index.php create mode 100644 releases/8.5/ja.php create mode 100644 releases/8.5/languages/en.php create mode 100644 releases/8.5/languages/es.php create mode 100644 releases/8.5/languages/fr.php create mode 100644 releases/8.5/languages/ja.php create mode 100644 releases/8.5/languages/nl.php create mode 100644 releases/8.5/languages/pt_BR.php create mode 100644 releases/8.5/languages/ru.php create mode 100644 releases/8.5/languages/tr.php create mode 100644 releases/8.5/languages/uk.php create mode 100644 releases/8.5/languages/zh.php create mode 100644 releases/8.5/nl.php create mode 100644 releases/8.5/pt_BR.php create mode 100644 releases/8.5/release.inc create mode 100644 releases/8.5/ru.php create mode 100644 releases/8.5/snippets.php create mode 100644 releases/8.5/tr.php create mode 100644 releases/8.5/uk.php create mode 100644 releases/8.5/zh.php create mode 100644 styles/php85.css diff --git a/images/php8/logo_php8_5.svg b/images/php8/logo_php8_5.svg new file mode 100644 index 0000000000..befa8d9efe --- /dev/null +++ b/images/php8/logo_php8_5.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/images/php8/php_8_5-animated.svg b/images/php8/php_8_5-animated.svg new file mode 100644 index 0000000000..2ea321838f --- /dev/null +++ b/images/php8/php_8_5-animated.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/include/layout.inc b/include/layout.inc index 17f76b8fd4..70348d9248 100644 --- a/include/layout.inc +++ b/include/layout.inc @@ -43,7 +43,7 @@ function highlight_php($code, $return = false) // Same as highlight_php() but does not require ')+!", '', $highlighted_code, 1); @@ -506,10 +506,10 @@ function get_nav_items(): array { id: 'help', ), new NavItem( - name: 'PHP 8.4', - href: '/releases/8.4/index.php', + name: 'PHP 8.5', + href: '/releases/8.5/index.php', id: 'php8', - image: '/images/php8/logo_php8_4.svg', + image: '/images/php8/logo_php8_5.svg', ) ]; } diff --git a/releases/8.5/common.php b/releases/8.5/common.php new file mode 100644 index 0000000000..2712b16aa0 --- /dev/null +++ b/releases/8.5/common.php @@ -0,0 +1,79 @@ + 'English', + 'fr' => 'Français', + 'ru' => 'Russian', + 'pt_BR' => 'Brazilian Portuguese', + 'nl' => 'Nederlands', + 'es' => 'Spanish', + 'tr' => 'Türkçe', + 'uk' => 'Українська', + 'zh' => '简体中文', + 'ja' => '日本語', +]; + +function common_header(string $description): void { + global $MYSITE; + + $meta_image_path = \htmlspecialchars( + \filter_var($MYSITE . 'images/php8/php_8_5_released.png', \FILTER_VALIDATE_URL)); + $meta_description = \htmlspecialchars($description); + + \site_header("PHP 8.5 Release Announcement", [ + 'current' => 'php8', + 'css' => ['php85.css'], + 'meta_tags' => << + + + + + + + + + + + + +META + ]); +} + +function language_chooser(string $currentLang): void { + // Print out the form with all the options + echo ' +
+
+ + +
+
+'; +} + +function message($code, $language = 'en') +{ + $original = require __DIR__ . '/languages/en.php'; + if (($language !== 'en') && file_exists(__DIR__ . '/languages/' . $language . '.php')) { + $translation = require __DIR__ . '/languages/' . $language . '.php'; + } + + return $translation[$code] ?? $original[$code] ?? $code; +} diff --git a/releases/8.5/en.php b/releases/8.5/en.php new file mode 100644 index 0000000000..7ff380e63b --- /dev/null +++ b/releases/8.5/en.php @@ -0,0 +1,5 @@ +chooseCode("", "", $_SERVER['HTTP_ACCEPT_LANGUAGE']); + +mirror_redirect("/releases/8.5/$lang.php"); diff --git a/releases/8.5/ja.php b/releases/8.5/ja.php new file mode 100644 index 0000000000..9db1f5ca85 --- /dev/null +++ b/releases/8.5/ja.php @@ -0,0 +1,5 @@ + 'PHP 8.5 is a major update of the PHP language. It contains many new features, such as property hooks, asymmetric visibility, an updated DOM API, performance improvements, bug fixes, and general cleanup.', + 'documentation' => 'Doc', + 'main_title' => 'Pipe Operator, New URI Extension, Error Handling & Type System Improvements, and more', + 'main_subtitle' => 'Bringing new major features such as the Pipe operator, a new URI extension to parse and build standard-compliant URIs, new functions and classes, and improvements in the type system, attributes, error handling and performance, PHP 8.5 is released.
PHP 8.5 also brings a healthy amount of bug fixes, performance improvements, and deprecations.', + 'upgrade_now' => 'Upgrade', + 'release_highlights' => 'PHP 8.5 Highlights', + + 'tag_new_syntax' => 'Syntax', + 'tag_new_ext' => 'New Extension', + 'tag_new_feature' => 'Feature', + 'tag_new_attr' => 'Attribute', + 'tag_behavior_change' => 'Behavior Change', + + 'release_stats_title' => 'PHP 8.5 Released', + 'release_stats_subtitle' => '

The PHP Foundation and the PHP Group are proud to announce the release of PHP 8.5, bringing a new wave of features, stability, and performance to the world’s most popular web programming language.

PHP 8.5 introduces numerous new features, performance enhancements, and bug fixes, while deprecating outdated functionality to make the language more focused, consistent, and lean.', + 'release_stats_commits' => 'Commits', + 'release_stats_contributors' => 'Contributors', + 'release_stats_rfcs' => 'RFC Discussions', + 'release_stats_issues_closed' => 'Issues Closed', + + 'changelog_title' => 'PHP 8.5 Highlights', + 'changelog_title_title' => 'PHP 8.5 remains largely backwards-compatible with PHP 8.x series. It brings new syntax such as the Pipe Operator, but existing applications can use PHP 8.5 as a drop-in replacement to benefit from the security and performance improvements as well as the new features.', + + 'pipe_operator_title' => 'Pipe Operator', + 'pipe_operator_description' => '

The pipe operator allows chaining function calls together without dealing with intermediary variables. That can be especially helpful when replacing many "nested calls" with a chain that can be read forwards, rather than inside-out.

Learn more about the backstory of this feature in The PHP Foundation’s blog.

', + + 'url_parsing_api_title' => 'New URI Extension', + 'url_parsing_api_description' => '

As an always-available part of PHP\'s standard library the new URI extension provides APIs to parse and modify URIs and URLs according to the RFC 3986 and the WHATWG URL standards.

The secure and standards-compliant URI parsing is powered by the uriparser (RFC 3986) and Lexbor (WHATWG URL) libraries.

Learn more about the backstory of this feature in The PHP Foundation’s blog.

', + + 'clone_with_title' => 'Clone With', + 'clone_with_description' => '

It is now possible to update properties during object cloning by passing an associative array with the updated to the clone() function. This enables straight-forward support of the "with-er" pattern for readonly classes.

', + + 'fcc_in_const_expr_title' => 'Closures and First Class Callables in Constant Expressions', + 'fcc_in_const_expr_description' => '

Closures and First-class Callables can now be used as global and class constant expressions, parameter and property default expressions, and attribute parameters.', + + 'curl_share_persistence_improvement_title' => 'Persistent cURL Share Handles', + 'curl_share_persistence_improvement_description' => '

Persistent cURL Share Handles with the new curl_share_init_persistent() function added in PHP 8.5, which opens a persistent Curl connection which does not get destroyed at the end of the PHP request. If a persistent share handle with the same set of share_options is found, it will be reused.

', + + 'array_first_last_title' => 'New array_first() and array_last() functions', + 'array_first_last_description' => '

PHP 8.5 brings a new pair of functions, array_first() and array_last(), that return the first and last value of a given array.

They complement the array_key_first() and array_key_first() functions added in PHP 7.4.

', + + 'no_discard_title' => '#[\NoDiscard] Attribute', + 'no_discard_description' => '

By adding the #[\NoDiscard] attribute to a function, PHP will check whether the returned value is consumed and emit a warning if it is not. This allows to improve the safety of APIs where the returned value is important, but where it is easy to forget using the return value by accident.

The associated (void) cast can be used to indicate that a value is intentionally unused.

', + + + 'error_handling_improvements' => 'Error Handling Improvements', + 'error_handling_improvements_text' => '

PHP 8.5 improves error handling and semantics in PHP functions and classes, as well as improvements in the error messages.

Errors that were previously silently ignored, such as an unexpectedly terminated sendmail call from the mail() function are now emitted as a warning.

', + + 'type_attr_improvements' => 'Type System and Attribute Improvements', + 'type_attr_improvements_text' => '

As PHP evolves, PHP gets increasingly expressive, with improvements in the type system, and new attributes that help declare certain behaviors and restrictions.

', + + 'fatal_error_backtrace_title' => 'Backtraces on Fatal Errors', + 'fatal_error_backtrace_description' => '

PHP 8.5 can now show a backtrace when a fatal error occurs, such as reaching the memory limit or exceeding the maximum execution time. Previously, it only showed the error message without a backtrace, which made it difficult to debug the errors.

The new fatal_error_backtraces INI directive controls whether fatal errors should include a backtrace.

', + + 'value_error_change_title' => 'Improved ValueError Semantics', + 'value_error_change_description' => '

Several PHP functions are updated to throw ValueError exceptions when a parameter provided is unsatisfactory.

Some of these functions include bzcompress(), finfo_file(), ldap_get_option(), ldap_set_option(), and pcntl_exec().

', + + 'get_error_exception_handler_title' => 'New get_error_handler and get_exception_handler() functions', + 'get_error_exception_handler_description' => '

PHP 8.5 adds helper two new helper functions, get_exception_handler(), and get_error_handler() to retrieve the currently set exception and error handlers. These two new functions complement the existing set_exception_handler(), and set_error_handler() functions.

', + + + 'attr_on_consts_title' => 'Attributes support for constants', + 'attr_on_consts_description' => '

In PHP 8.5 and later, it is possible to add attributes to compile-time non-class constants.

One useful use-case is applying the [#Deprecated] to constants, to declare that a constant is deprecated, which PHP automatically emits a deprecation notice when the constant is used.

', + + 'cpp_on_final_props_title' => 'final property syntax support in constructor properties', + 'cpp_on_final_props_description' => '

PHP 8.0 added support for constructor properties, which allows declaring class properties in the class constructor. Since PHP 8.4, it is possible to declare class properties as final.

', + + 'static_aviz_title' => 'Asymmetric Visibility for Static Properties', + 'static_aviz_description' => '

PHP 8.5 extends the PHP 8.4 Asymmetric Visibility, to allow declaring asymmetric visibility rules for static class properties.

', + + 'override_attr_props_title' => 'Extend #[\Override] to target properties', + 'override_attr_props_description' => '

The #[\Override] attribute, which emits a compilation error if a class method is not being extended (because the parent class has no such method), now supports class properties as well.

', + + 'support_status' => 'Support and Life Cycle', + 'support_status_description' => '

PHP 8.5 will receive two years of active bug fixes and security fixes, followed by two years of security support.

', + + 'support_status_release_date' => 'Release Date', + 'support_status_active_until' => 'Active Support Ends', + 'support_status_active_eol' => 'End-of-life', + + 'get_involved' => 'Get Involved', + 'get_involved_description' => '

PHP is an open-source software, powering the majority of web applications on the Internet.

You can help shape the future of PHP, with code contributions, documentation contributions, reporting security issues and bug reports, joining the mailing list discussions, and contributing financially to the PHP Foundation.', + + 'footer_title' => 'Better performance, better syntax, improved type safety.', + 'footer_description' => '

For source downloads of PHP 8.5 please visit the downloads page. Windows binaries can be found on the PHP for Windows site. The list of changes is recorded in the ChangeLog.

+

The migration guide is available in the PHP Manual. Please consult it for a detailed list of new features and backward-incompatible changes.

', + + 'download' => 'Download PHP 8.5', + 'migration_guide' => 'Migration guide', + + 'footnotes' => '' +]; diff --git a/releases/8.5/languages/es.php b/releases/8.5/languages/es.php new file mode 100644 index 0000000000..7dcaa8258b --- /dev/null +++ b/releases/8.5/languages/es.php @@ -0,0 +1,58 @@ + 'PHP 8.4 es una actualización importante del lenguaje PHP. Contiene muchas características nuevas, como hooks para propiedades, visibilidad asimétrica, una API DOM actualizada, mejoras de rendimiento, correcciones de errores y limpieza general.', + 'documentation' => 'Documentación', + 'main_title' => '¡Lanzado!', + 'main_subtitle' => 'PHP 8.4 es una actualización importante del lenguaje PHP.
Contiene muchas características nuevas, como hooks para propiedades, visibilidad asimétrica, una API DOM actualizada, mejoras de rendimiento, correcciones de errores y limpieza general.', + 'upgrade_now' => '¡Actualiza a PHP 8.4 ahora!', + + 'property_hooks_title' => 'Hooks para Propiedades', + 'property_hooks_description' => 'Los hooks para propiedades proporcionan soporte para propiedades calculadas que pueden ser comprendidas nativamente por los IDE y las herramientas de análisis estático, sin necesidad de escribir comentarios docblock que podrían desincronizarse. Además, permiten un preprocesamiento o postprocesamiento fiable de los valores, sin necesidad de comprobar si existe un getter o setter coincidente en la clase.', + 'asymmetric_visibility_title' => 'Visibilidad asimétrica', + 'asymmetric_visibility_description' => 'El alcance para escribir en una propiedad ahora se puede controlar independientemente del alcance para leer la propiedad, lo que reduce la necesidad de métodos getter repetitivos para exponer el valor de una propiedad sin permitir modificaciones desde fuera de una clase.', + 'deprecated_attribute_title' => 'Atributo #[\Deprecated]', + 'deprecated_attribute_description' => 'El nuevo atributo #[\Deprecated] hace que el mecanismo de obsolescencia existente de PHP esté disponible para funciones, métodos y constantes de clase definidas por el usuario.', + 'dom_additions_html5_title' => 'Nuevas características de ext-dom y soporte para HTML5', + 'dom_additions_html5_description' => '

Nueva API DOM que incluye soporte conforme a los estándares para el análisis de documentos HTML5, corrige varios errores de cumplimiento antiguos en el comportamiento de la funcionalidad DOM, y añade varias funciones para hacer más conveniente trabajar con documentos.

La nueva API DOM está disponible dentro del espacio de nombres Dom. Los documentos que utilizan la nueva API DOM pueden ser creados utilizando las clases Dom\HTMLDocument y Dom\XMLDocument.', + 'bcmath_title' => 'API de objetos para BCMath', + 'bcmath_description' => '

El nuevo objeto BcMath\Number permite el uso orientado a objetos y operadores matemáticos estándar cuando se trabaja con números de precisión arbitraria.

Estos objetos son inmutables e implementan la interfaz Stringable, por lo que se pueden usar en contextos de cadena como echo $num.

', + 'new_array_find_title' => 'Nuevas funciones array_*()', + 'new_array_find_description' => 'Nuevas funciones disponibles: array_find(), array_find_key(), array_any() y array_all().', + 'pdo_driver_specific_subclasses_title' => 'Subclases específicas del driver PDO', + 'pdo_driver_specific_subclasses_description' => 'Las nuevas subclases Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql y Pdo\Sqlite de PDO ahora están disponibles.', + 'new_without_parentheses_title' => 'new MyClass()->method() sin paréntesis', + 'new_without_parentheses_description' => 'Las propiedades y métodos de un objeto recién instanciado ahora se pueden acceder sin envolver la expresión new entre paréntesis.', + + 'new_classes_title' => 'Nuevas Clases, Interfaces y Funciones', + 'new_lazy_objects' => 'Nuevos Objetos Lazy.', + 'new_jit_implementation' => 'Nueva implementación JIT basada en el marco IR.', + 'new_core_functions' => 'Nueva función request_parse_body().', + 'new_bcmath_functions' => 'Nuevas funciones: bcceil(), bcdivmod(), bcfloor() y bcround().', + 'new_round_modes' => 'Nuevo enum RoundingMode para round() con 4 nuevos modos de redondeo: TowardsZero, AwayFromZero, NegativeInfinity y PositiveInfinity.', + 'new_date_functions' => 'Nuevos métodos: DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond(), DateTimeImmutable::createFromTimestamp(), DateTimeImmutable::getMicrosecond(), y DateTimeImmutable::setMicrosecond().', + 'new_mb_functions' => 'Nuevas funciones: mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), y mb_lcfirst().', + 'new_pcntl_functions' => 'Nuevas funciones: pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns() y pcntl_waitid().', + 'new_reflection_functions' => 'Nuevos métodos: ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed(), y ReflectionProperty::isDynamic().', + 'new_standard_functions' => 'Nuevas funciones: http_get_last_response_headers(), http_clear_last_response_headers() y fpow().', + 'new_xml_functions' => 'Nuevos métodos: XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri() y XMLWriter::toMemory().', + 'new_grapheme_function' => 'Nueva función grapheme_str_split().', + + 'bc_title' => 'Deprecaciones y cambios en compatibilidad retroactiva', + 'bc_pecl' => 'Las extensiones IMAP, OCI8, PDO_OCI y pspell han sido desagregadas y movidas a PECL.', + 'bc_nullable_parameter_types' => 'Los tipos de parámetros implícitamente nulos ahora están en desuso.', + 'bc_classname' => 'Usar _ como nombre de clase ahora está en desuso.', + 'bc_zero_raised_to_negative_number' => 'Elevar cero a la potencia de un número negativo ahora está en desuso.', + 'bc_gmp' => 'La clase GMP ahora es final.', + 'bc_round' => 'Pasar un modo inválido a round() lanza un ValueError.', + 'bc_typed_constants' => 'Las constantes de clase de las extensiones date, intl, pdo, reflection, spl, sqlite, xmlreader ahora tienen tipos.', + 'bc_mysqli_constants' => 'Los constantes MYSQLI_SET_CHARSET_DIR, MYSQLI_STMT_ATTR_PREFETCH_ROWS, MYSQLI_CURSOR_TYPE_FOR_UPDATE, MYSQLI_CURSOR_TYPE_SCROLLABLE, y MYSQLI_TYPE_INTERVAL han sido eliminadas.', + 'bc_mysqli_functions' => 'Las funciones mysqli_ping(), mysqli_kill(), mysqli_refresh(), los métodos mysqli::ping(), mysqli::kill(), mysqli::refresh(), y los constantes MYSQLI_REFRESH_* están en desuso.', + 'bc_standard' => 'stream_bucket_make_writeable() y stream_bucket_new() ahora devuelven una instancia de StreamBucket en lugar de stdClass.', + 'bc_core' => 'Cambio en el comportamiento de exit().', + 'bc_warnings' => 'El constante E_STRICT está en desuso.', + + 'footer_title' => 'Mejor rendimiento, mejor sintaxis, mejor seguridad de tipos.', + 'footer_description' => '

Para descargar el código fuente de PHP 8.4, por favor visita la página de descargas. Los binarios para Windows se encuentran en el sitio PHP para Windows. La lista de cambios está registrada en el ChangeLog.

+

La guía de migración está disponible en el Manual de PHP. Por favor, consúltala para una lista detallada de nuevas características y cambios incompatibles con versiones anteriores.

', +]; diff --git a/releases/8.5/languages/fr.php b/releases/8.5/languages/fr.php new file mode 100644 index 0000000000..fc6c3f238a --- /dev/null +++ b/releases/8.5/languages/fr.php @@ -0,0 +1,57 @@ + 'PHP 8.4 est une mise à jour majeure du langage PHP. Elle inclut de nombreuses nouvelles fonctionnalités, telles que les hooks de propriétés, la visibilité asymétrique, une API DOM mise à jour, des améliorations de performances, des corrections de bugs et un nettoyage général.', + 'documentation' => 'Doc', + 'main_title' => 'Released!', + 'main_subtitle' => 'PHP 8.4 est une mise à jour majeure du langage PHP.
Elle introduit de nombreuses nouvelles fonctionnalités, telles que les hooks de propriétés, la visibilité asymétrique, une API DOM mise à jour, des améliorations de performances, des corrections de bugs et un nettoyage général.', + 'upgrade_now' => 'Migrer vers PHP 8.4 maintenant!', + + 'property_hooks_title' => 'Hooks de propriété', + 'property_hooks_description' => 'Les hooks de propriété offrent un support pour les propriétés calculées, compréhensibles nativement par les IDE et les outils d\'analyse statique, sans avoir besoin d\'écrire des commentaires docblock susceptibles de devenir obsolètes. De plus, ils permettent un pré- ou post-traitement fiable des valeurs, sans avoir à vérifier l\'existence d\'un getter ou d\'un setter correspondant dans la classe.', + 'asymmetric_visibility_title' => 'Visibilité asymétrique', + 'asymmetric_visibility_description' => 'La portée d\'écriture d\'une propriété peut désormais être contrôlée indépendamment de sa portée de lecture, réduisant ainsi le besoin de méthodes getter redondantes pour exposer la valeur d\'une propriété sans permettre sa modification depuis l\'extérieur d\'une classe.', + 'deprecated_attribute_title' => 'L\'attribut #[\Deprecated]', + 'deprecated_attribute_description' => 'Le nouvel attribut #[\Deprecated] rend le mécanisme d\'obsolescence existant de PHP disponible pour les fonctions, méthodes et constantes de classe définies par l\'utilisateur.', + 'dom_additions_html5_title' => 'Nouvelles fonctionnalités de l\'extension ext-dom et prise en charge de HTML5.', + 'dom_additions_html5_description' => '

Nouvelle API DOM offrant une prise en charge conforme aux standards pour l\'analyse des documents HTML5, corrigeant plusieurs bogues de conformité de longue date dans le comportement des fonctionnalités DOM et ajoutant plusieurs fonctions pour faciliter la manipulation des documents.

La nouvelle API DOM est disponible dans l\'espace de noms Dom. Les documents utilisant cette API peuvent être créés à l\'aide des classes Dom\HTMLDocument et Dom\XMLDocument.

', + 'bcmath_title' => 'API objet pour BCMath', + 'bcmath_description' => '

BCMath vous permet de travailler avec des nombres flottants de précision arbitraire en PHP. Avec cette version, vous pouvez bénéficier du style orienté objet et de la surcharge des opérateurs pour utiliser les nombres BCMath.

Cela signifie que vous pouvez désormais utiliser les opérateurs standard avec les objets BcMath\Number, ainsi que toutes les fonctions bc*.

Ces objets sont immuables et implémentent l\'interface Stringable, afin d\'être utilisés dans des chaînes de caractères tels que echo $num.

', + 'new_array_find_title' => 'Nouvelles fonctions array_*()', + 'new_array_find_description' => 'Les nouvelles fonctions array_find(), array_find_key(), array_any() et array_all() sont désormais disponibles.', + 'pdo_driver_specific_subclasses_title' => 'Parseurs SQL spécifiques au pilote PDO', + 'pdo_driver_specific_subclasses_description' => 'De nouvelles sous-classes Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql et Pdo\Sqlite de PDO sont désormais disponibles.', + 'new_without_parentheses_title' => 'new MyClass()->method() sans parenthèses.', + 'new_without_parentheses_description' => 'Les propriétés et méthodes d\'un objet nouvellement instancié peuvent désormais être accessibles sans entourer l\'expression new entre parenthèses.', + + 'new_classes_title' => 'Nouvelles classes, interfaces et fonctions', + 'new_lazy_objects' => 'Nouveaux objets à initialisation différée.', + 'new_jit_implementation' => 'Nouvelle implémentation JIT basée sur le framework IR.', + 'new_core_functions' => 'Nouvelle fonction request_parse_body().', + 'new_bcmath_functions' => 'Nouvelles fonctions bcceil(), bcdivmod(), bcfloor(), et bcround().', + 'new_round_modes' => 'Nouvelle énumération RoundingMode pour round() avec 4 nouveaux modes d\'arrondi TowardsZero, AwayFromZero, NegativeInfinity, et PositiveInfinity.', + 'new_date_functions' => 'Nouvelle méthodes DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond(), DateTimeImmutable::createFromTimestamp(), DateTimeImmutable::getMicrosecond(), et DateTimeImmutable::setMicrosecond().', + 'new_mb_functions' => 'Nouvelles fonctions mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), et mb_lcfirst().', + 'new_pcntl_functions' => 'Nouvelles fonctions pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns(), et pcntl_waitid().', + 'new_reflection_functions' => 'Nouvelles méthodes ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed(), et ReflectionProperty::isDynamic().', + 'new_standard_functions' => 'Nouvelles fonctions http_get_last_response_headers(), http_clear_last_response_headers(), et fpow().', + 'new_xml_functions' => 'Nouvelles méthodes XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri(), et XMLWriter::toMemory().', + 'new_grapheme_function' => 'Nouvelle fonction grapheme_str_split().', + + 'bc_title' => 'Obsolescence et changements non rétrocompatibles', + 'bc_pecl' => 'Les extensions IMAP, OCI8, PDO_OCI, et pspell ont été dissociées et transférées à PECL.', + 'bc_nullable_parameter_types' => 'Les types de paramètres implicitement nullables sont désormais obsolètes.', + 'bc_classname' => 'L\'utilisation de _ comme nom de classe est désormais obsolète.', + 'bc_zero_raised_to_negative_number' => 'L\'élévation de zéro à la puissance d\'un nombre négatif est désormais obsolète.', + 'bc_gmp' => 'La classe GMP est désormais final.', + 'bc_round' => 'Le passage d\'un mode invalide à round() déclenche une ValueError.', + 'bc_typed_constants' => 'Les constantes de classe des extensions date, intl, pdo, reflection, spl, sqlite, xmlreader sont désormais typées.', + 'bc_mysqli_constants' => 'Les constantes MYSQLI_SET_CHARSET_DIR, MYSQLI_STMT_ATTR_PREFETCH_ROWS, MYSQLI_CURSOR_TYPE_FOR_UPDATE, MYSQLI_CURSOR_TYPE_SCROLLABLE, et MYSQLI_TYPE_INTERVAL ont été supprimées.', + 'bc_mysqli_functions' => 'Les fonctions mysqli_ping(), mysqli_kill(), mysqli_refresh(), méthodes mysqli::ping(), mysqli::kill(), mysqli::refresh(), et constantes MYSQLI_REFRESH_* sont désormais obsolètes.', + 'bc_standard' => 'stream_bucket_make_writeable() et stream_bucket_new() renvoient désormais une instance de StreamBucket au lieu de stdClass.', + 'bc_core' => 'Changement de comportement de la fonction exit().', + 'bc_warnings' => 'La constante E_STRICT est désormais obsolète.', + + 'footer_title' => 'Meilleures performances, meilleure syntaxe, sécurité des types améliorée.', + 'footer_description' => '

Pour télécharger les sources de PHP 8.4, veuillez visiter la page des téléchargements. Les binaires pour Windows sont disponibles sur le site PHP for Windows. La liste des changements est enregistrée dans le ChangeLog.

Le guide de migration est disponible dans le manuel PHP. Veuillez le consulter pour une liste détaillée des nouvelles fonctionnalités et des changements non compatibles avec les versions précédentes.

', +]; diff --git a/releases/8.5/languages/ja.php b/releases/8.5/languages/ja.php new file mode 100644 index 0000000000..50f745f88d --- /dev/null +++ b/releases/8.5/languages/ja.php @@ -0,0 +1,58 @@ + 'PHP 8.4 は、PHP 言語のメジャーアップデートです。 プロパティフック、非対称可視性、DOM API のアップデートなどの新機能や、パフォーマンス改善、バグ修正やコードのクリーンアップが含まれています。', + 'documentation' => 'ドキュメント', + 'main_title' => 'リリース!', + 'main_subtitle' => 'PHP 8.4 は、PHP 言語のメジャーアップデートです。
プロパティフック、非対称可視性、新しい DOM API などの新機能や、パフォーマンス改善、バグ修正やコードのクリーンアップが含まれています。', + 'upgrade_now' => 'PHP 8.4 にアップデートしましょう!', + + 'property_hooks_title' => 'プロパティフック', + 'property_hooks_description' => 'プロパティフックは算出プロパティの機能を提供します。実態とずれやすい docblock コメントを書かずとも、IDEや静的解析ツールがネイティブに理解してくれます。さらに、対応するゲッターやセッターがそのクラスに存在するか確認することなく、確実に値の前処理・後処理を行うことができます。', + 'asymmetric_visibility_title' => '非対称可視性', + 'asymmetric_visibility_description' => 'プロパティへの書き込みのスコープが、読み込みのスコープと独立して制御できるようになります。これによって、クラス外からのプロパティの変更を防ぎ値の取得のみを行えるゲッターメソッドのボイラープレートを書く必要がなくなります。', + 'deprecated_attribute_title' => '#[\Deprecated] アトリビュート', + 'deprecated_attribute_description' => '新しい #[\Deprecated] アトリビュートを使うと、PHP の既存の非推奨機構をユーザー定義の関数、メソッド、クラス定数で利用できるようになります。', + 'dom_additions_html5_title' => 'DOM 拡張モジュールの新機能と HTML5 サポート', + 'dom_additions_html5_description' => '

新しい DOM API では、標準に沿った HTML5 ドキュメントのパース機能が追加され、古くからある標準に準拠しない複数の DOM 機能の振る舞いに関する不具合が修正され、ドキュメントの操作がより便利になるいくつかの関数が追加されました。

新しい DOM API は Dom 名前空間で利用できます。新しい DOM API を利用するドキュメントは Dom\HTMLDocumentDom\XMLDocument クラスを利用して作成できます。

', + 'bcmath_title' => 'BCMath のオブジェクト API', + 'bcmath_description' => '

新しい BcMath\Number オブジェクトを使うと、任意精度数値をオブジェクト指向で利用したり、通常の算術演算子で計算したりできるようになります。

このオブジェクトはイミュータブルで、 Stringable インターフェースを実装しているので echo $num のように文字列の文脈で利用可能です。

', + 'new_array_find_title' => '新しい array_*() 関数', + 'new_array_find_description' => '新しい関数 array_find()array_find_key()array_any()array_all() が追加されました。', + 'pdo_driver_specific_subclasses_title' => 'PDO ドライバー固有のサブクラス', + 'pdo_driver_specific_subclasses_description' => '新しい PDO のサブクラス Pdo\DblibPdo\FirebirdPdo\MySqlPdo\OdbcPdo\PgsqlPdo\Sqlite が追加されました。', + 'new_without_parentheses_title' => '括弧なしの new MyClass()->method()', + 'new_without_parentheses_description' => '新しくインスタンス化されたオブジェクトのプロパティとメソッドへのアクセスが、new 式を括弧で囲むことなくできるようになります。', + + 'new_classes_title' => '新しいクラス、インターフェイス、関数', + 'new_lazy_objects' => 'レイジーオブジェクト', + 'new_jit_implementation' => 'IR フレームワークベースの新しい JIT 実装', + 'new_core_functions' => 'request_parse_body() 関数', + 'new_bcmath_functions' => 'bcceil()bcdivmod()bcfloor()bcround() 関数', + 'new_round_modes' => 'round() 関数の新しい4つの丸めモード TowardsZeroAwayFromZeroNegativeInfinityPositiveInfinity のための RoundingMode 列挙型', + 'new_date_functions' => 'DateTime::createFromTimestamp()DateTime::getMicrosecond()DateTime::setMicrosecond()DateTimeImmutable::createFromTimestamp()DateTimeImmutable::getMicrosecond()DateTimeImmutable::setMicrosecond() メソッド', + 'new_mb_functions' => 'mb_trim()mb_ltrim()mb_rtrim()mb_ucfirst()mb_lcfirst() 関数', + 'new_pcntl_functions' => 'pcntl_getcpu()pcntl_getcpuaffinity()pcntl_getqos_class()pcntl_setns()pcntl_waitid() 関数', + 'new_reflection_functions' => 'ReflectionClassConstant::isDeprecated()ReflectionGenerator::isClosed()ReflectionProperty::isDynamic() メソッド', + 'new_standard_functions' => 'http_get_last_response_headers()http_clear_last_response_headers()fpow() 関数', + 'new_xml_functions' => 'XMLReader::fromStream()XMLReader::fromUri()XMLReader::fromString()XMLWriter::toStream()XMLWriter::toUri()XMLWriter::toMemory() メソッド', + 'new_grapheme_function' => 'grapheme_str_split() 関数', + + 'bc_title' => '非推奨、および互換性のない変更', + 'bc_pecl' => 'IMAP、OCI8、PDO_OCI、pspell 拡張モジュールが PHP 本体から削除され、PECL に移動されました。', + 'bc_nullable_parameter_types' => '暗黙の nullable 型パラメータが非推奨になりました。', + 'bc_classname' => 'クラス名として _ を使うことは非推奨になりました。', + 'bc_zero_raised_to_negative_number' => 'ゼロの負の数のべき乗は非推奨になりました。', + 'bc_gmp' => 'GMP クラスは final になりました。', + 'bc_round' => 'round() に無効なモードを渡すと ValueError がスローされます。', + 'bc_typed_constants' => 'dateintlpdoreflectionsplsqlitexmlreader 拡張モジュールのクラス定数に型宣言が追加されました。', + 'bc_mysqli_constants' => '定数 MYSQLI_SET_CHARSET_DIRMYSQLI_STMT_ATTR_PREFETCH_ROWSMYSQLI_CURSOR_TYPE_FOR_UPDATEMYSQLI_CURSOR_TYPE_SCROLLABLEMYSQLI_TYPE_INTERVAL が削除されました。', + 'bc_mysqli_functions' => 'mysqli_ping()mysqli_kill()mysqli_refresh() 関数、mysqli::ping()mysqli::kill()mysqli::refresh() メソッド、MYSQLI_REFRESH_* 定数は非推奨になりました。', + 'bc_standard' => 'stream_bucket_make_writeable()stream_bucket_new() の戻り値は stdClass ではなく StreamBucket になりました。', + 'bc_core' => 'exit() の挙動が変更されました。', + 'bc_warnings' => 'E_STRICT 定数は非推奨になりました。', + + 'footer_title' => 'さらなる性能向上、よりよい構文、すぐれた型安全性。', + 'footer_description' => '

PHP 8.4 のソースコードのダウンロードはこちらから。Windows バイナリは PHP for Windows ページにあります。変更の一覧は ChangeLog にあります。

+

移行ガイドが PHP マニュアルに用意されています。新機能や互換性のない変更の詳細については、移行ガイドを参照してください。

', +]; diff --git a/releases/8.5/languages/nl.php b/releases/8.5/languages/nl.php new file mode 100644 index 0000000000..f2e488dced --- /dev/null +++ b/releases/8.5/languages/nl.php @@ -0,0 +1,57 @@ + 'PHP 8.4 is een omvangrijke update van de PHP programmeertaal. Het bevat veel nieuwe functionaliteit, zoals property hooks, asymmetrische zichtbaarheid, een bijgewerkte DOM API, prestatieverbeteringen, bugfixes en meer consistentie.', + 'documentation' => 'Documentatie', + 'main_title' => 'Beschikbaar!', + 'main_subtitle' => 'PHP 8.4 is een omvangrijke update van de PHP programmeertaal.
Het bevat veel nieuwe functionaliteit, zoals property hooks, asymmetrische zichtbaarheid, een bijgewerkte DOM API, prestatieverbeteringen, bugfixes en meer consistentie.', + 'upgrade_now' => 'Upgrade nu naar PHP 8.4!', + + 'property_hooks_title' => 'Property hooks', + 'property_hooks_description' => 'Property hooks geven ondersteuning voor berekende eigenschappen. Deze worden rechtstreeks ondersteund door IDEs en statische analyseprogramma’s, zonder dat documentatie blokken nodig zijn. Bovendien laten ze toe om waarden voor- of achteraf te verwerken zonder gebruik te maken van een getter of setter in de klasse.', + 'asymmetric_visibility_title' => 'Asymmetrische zichtbaarheid', + 'asymmetric_visibility_description' => 'De scope voor het schrijven naar een eigenschap kan nu onafhankelijk gecontroleerd worden ten opzichte van de scope om de eigenschap te lezen. Dit reduceert de nood voor repetitieve getter en setter methoden om de eigenschap bloot te stellen zonder aanpassing toe te laten buiten de klasse.', + 'deprecated_attribute_title' => '#[\Deprecated] attribuut', + 'deprecated_attribute_description' => 'Het nieuwe #[\Deprecated] attribuut maakt PHP’s bestaand uitfaseringsmechanisme beschikbaar voor gebruiker gedefinieerde functies, methoden en klasseconstanten.', + 'dom_additions_html5_title' => 'Nieuwe ext-dom functies en HTML5 ondersteuning', + 'dom_additions_html5_description' => '

Nieuwe DOM API met correcte ondersteuning voor de HTML 5 standaard, oplossingen voor verschillende lang bestaande compliance bugs in the DOM functionaliteit, en verschillende nieuwe functies om het werken met documenten eenvoudiger te maken.

De nieuwe DOM API is beschikbaar via de Dom namespace. Documenten die de nieuwe API willen gebruiken, kunnen aangemaakt worden via de Dom\HTMLDocument en Dom\XMLDocument klassen.

', + 'bcmath_title' => 'Object API voor BCMath', + 'bcmath_description' => '

De nieuwe BcMath\Number klasse laat toe om op object-georiënteerde wijze, met standaard wiskundige operaties, te werken met arbitraire precisie getallen.

Deze objecten zijn niet muteerbaar en implementeren de Stringable interface, waardoor ze gebruikt kunnen worden in string contexten zoals echo $num.

', + 'new_array_find_title' => 'Nieuwe array_*() functies', + 'new_array_find_description' => 'Nieuwe functies array_find(), array_find_key(), array_any(), en array_all() zijn nu beschikbaar.', + 'pdo_driver_specific_subclasses_title' => 'PDO driver specifieke SQL parsers', + 'pdo_driver_specific_subclasses_description' => 'Nieuwe subklassen Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql, Pdo\Sqlite van PDO zijn nu beschikbaar.', + 'new_without_parentheses_title' => 'new MyClass()->method() zonder haakjes', + 'new_without_parentheses_description' => 'Eigenschappen en methoden van een nieuw geïnstantieerd object kunnen nu opgevraagd worden zonder de new expressie tussen haakjes te zetten.', + + 'new_classes_title' => 'Nieuwe klassen, interfaces en functies', + 'new_jit_implementation' => 'Nieuwe JIT implementation gebaseerd op IR Framework.', + 'new_core_functions' => 'Nieuwe request_parse_body() functie.', + 'new_bcmath_functions' => 'Nieuwe bcceil(), bcdivmod(), bcfloor(), en bcround() functies.', + 'new_round_modes' => 'Nieuwe RoundingMode enum voor round() met 4 nieuwe afrondingsmodi TowardsZero, AwayFromZero, NegativeInfinity, en PositiveInfinity.', + 'new_date_functions' => 'Nieuwe DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond(), DateTimeImmutable::createFromTimestamp(), DateTimeImmutable::getMicrosecond(), en DateTimeImmutable::setMicrosecond() methoden.', + 'new_mb_functions' => 'Nieuwe mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), en mb_lcfirst() functies.', + 'new_pcntl_functions' => 'Nieuwe pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns(), en pcntl_waitid() functies.', + 'new_reflection_functions' => 'Nieuwe ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed(), en ReflectionProperty::isDynamic() methoden.', + 'new_standard_functions' => 'Nieuwe http_get_last_response_headers(), http_clear_last_response_headers(), en fpow() functies.', + 'new_xml_functions' => 'Nieuwe XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri(), en XMLWriter::toMemory() methoden.', + 'new_grapheme_function' => 'Nieuwe grapheme_str_split() functie.', + + 'bc_title' => 'Uitfaseringen en neerwaarts incompatibele aanpassingen', + 'bc_pecl' => 'De IMAP, OCI8, PDO_OCI en pspell-extensies zijn ontbundeld en verplaatst naar PECL.', + 'bc_nullable_parameter_types' => 'Impliciet parameters als null definiëren is nu uitgefaseerd.', + 'bc_classname' => 'Gebruik van _ als een klassenaam is nu uitgefaseerd.', + 'bc_zero_raised_to_negative_number' => 'Nul verheffen tot een negatieve macht is nu uitgefaseerd.', + 'bc_gmp' => 'GMP klasse is nu final.', + 'bc_round' => 'Ongeldige modus doorgeven aan round() resulteert in een ValueError.', + 'bc_typed_constants' => 'Klasseconstanten van extensies date, intl, pdo, reflection, spl, sqlite, xmlreader hebben nu types.', + 'bc_mysqli_constants' => 'MYSQLI_SET_CHARSET_DIR, MYSQLI_STMT_ATTR_PREFETCH_ROWS, MYSQLI_CURSOR_TYPE_FOR_UPDATE, MYSQLI_CURSOR_TYPE_SCROLLABLE, en MYSQLI_TYPE_INTERVAL constanten zijn verwijderd.', + 'bc_mysqli_functions' => 'mysqli_ping(), mysqli_kill(), mysqli_refresh() functies, mysqli::ping(), mysqli::kill(), mysqli::refresh() methoden, en MYSQLI_REFRESH_* constanten zijn uitgefaseerd.', + 'bc_standard' => 'stream_bucket_make_writeable() en stream_bucket_new() geven nu een instantie van StreamBucket terug in plaats van stdClass.', + 'bc_core' => 'exit() heeft ander gedrag.', + 'bc_warnings' => 'E_STRICT constante is uitgefaseerd.', + + 'footer_title' => 'Betere prestaties, betere syntaxis, verbeterd type systeem.', + 'footer_description' => '

Ga naar de downloads pagina om de PHP 8.4 code te verkrijgen. Uitvoerbare bestanden voor Windows kan je vinden op de PHP voor Windows website. De volledige lijst met wijzigingen is vastgelegd in een ChangeLog.

+

De migratie gids is beschikbaar in de PHP Handleiding. Gebruik deze om een gedetailleerde lijst te krijgen van nieuwe opties en neerwaarts incompatibele aanpassingen.

', +]; diff --git a/releases/8.5/languages/pt_BR.php b/releases/8.5/languages/pt_BR.php new file mode 100644 index 0000000000..42f3453f74 --- /dev/null +++ b/releases/8.5/languages/pt_BR.php @@ -0,0 +1,58 @@ + 'PHP 8.4 é uma atualização importante da linguagem PHP. Ela contém muitos novos recursos, como hooks de propriedade, visibilidade assimétrica, uma API DOM atualizada, melhorias de desempenho, correções de bugs e uma limpeza geral.', + 'documentation' => 'Doc', + 'main_title' => 'Lançado!', + 'main_subtitle' => 'PHP 8.4 é uma atualização importante da linguagem PHP.
Ela contém muitos novos recursos, como hooks de propriedade, visibilidade assimétrica, uma API DOM atualizada, melhorias de desempenho, correções de bugs e uma limpeza geral.', + 'upgrade_now' => 'Atualize para PHP 8.4 agora!', + + 'property_hooks_title' => 'Hooks de Propriedade', + 'property_hooks_description' => 'Hooks de Propriedade oferecem suporte para propriedades computadas que podem ser interpretadas nativamente por IDEs e ferramentas de análise estática, sem a necessidade de escrever comentários em docblocks que podem ficar desatualizados. Além disso, eles permitem o pré-processamento ou pós-processamento confiável de valores, sem precisar verificar se um getter ou setter correspondente existe na classe.', + 'asymmetric_visibility_title' => 'Visibilidade Assimétrica', + 'asymmetric_visibility_description' => 'O escopo para escrita em uma propriedade agora pode ser controlado independentemente do escopo para leitura da propriedade, reduzindo a necessidade de métodos getter redundantes para expor o valor de uma propriedade sem permitir sua modificação fora da classe.', + 'deprecated_attribute_title' => '#[\Deprecated] Atributo', + 'deprecated_attribute_description' => 'O novo atributo #[\Deprecated] torna o mecanismo de descontinuação existente no PHP disponível para funções, métodos e constantes de classe definidas pelo usuário.', + 'dom_additions_html5_title' => 'Novos recursos ext-dom e suporte a HTML5', + 'dom_additions_html5_description' => 'Novas classes Dom\HTMLDocument, Dom\XMLDocument e métodos DOMNode::compareDocumentPosition(), DOMXPath::registerPhpFunctionNS(), DOMXPath::quote(), XSLTProcessor::registerPHPFunctionNS() estão disponíveis.', + 'bcmath_title' => 'API de Objetos para BCMath', + 'bcmath_description' => '

O novo objeto BcMath\Number permite o uso orientado a objetos e operadores matemáticos padrão ao trabalhar com números de precisão arbitrária.

Esses objetos são imutáveis e implementam a interface Stringable, então podem ser usados em contextos de string como echo $num.

', + 'new_array_find_title' => 'Novas funções array_*()', + 'new_array_find_description' => 'Novas funções array_find(), array_find_key(), array_any() e array_all() estão disponíveis.', + 'pdo_driver_specific_subclasses_title' => 'Parsers SQL específicos para drivers PDO', + 'pdo_driver_specific_subclasses_description' => 'Novas subclasses Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql, Pdo\Sqlite de PDO estão disponíveis.', + 'new_without_parentheses_title' => 'new MyClass()->method() sem parênteses', + 'new_without_parentheses_description' => 'Propriedades e métodos de um objeto recém-instanciado agora podem ser acessados sem a necessidade de envolver a expressão new entre parênteses.', + + 'new_classes_title' => 'Novas classes, interfaces e funções', + 'new_lazy_objects' => 'Novos Objetos de Inicialização Lenta.', + 'new_jit_implementation' => 'Nova implementação JIT baseada no Framework IR.', + 'new_core_functions' => 'Nova função request_parse_body().', + 'new_bcmath_functions' => 'Novas funções bcceil(), bcdivmod(), bcfloor() e bcround().', + 'new_round_modes' => 'Novo Enum RoundingMode para round() com 4 novos modos de arredondamento: TowardsZero, AwayFromZero, NegativeInfinity e PositiveInfinity.', + 'new_date_functions' => 'Novos métodos DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond(), DateTimeImmutable::createFromTimestamp(), DateTimeImmutable::getMicrosecond() e DateTimeImmutable::setMicrosecond().', + 'new_mb_functions' => 'Novas funções mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst() e mb_lcfirst().', + 'new_pcntl_functions' => 'Novas funções pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns() e pcntl_waitid().', + 'new_reflection_functions' => 'Novos métodos ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed() e ReflectionProperty::isDynamic().', + 'new_standard_functions' => 'Novas funções http_get_last_response_headers(), http_clear_last_response_headers() e fpow().', + 'new_xml_functions' => 'Novos métodos XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri() e XMLWriter::toMemory().', + 'new_grapheme_function' => 'Nova função grapheme_str_split().', + + 'bc_title' => 'Alterações obsoletas e incompatibilidades com versões anteriores', + 'bc_pecl' => 'As extensões IMAP, OCI8, PDO_OCI e pspell foram separadas e movidas para o PECL.', + 'bc_nullable_parameter_types' => 'Tipos de parâmetros implicitamente anuláveis agora estão obsoletos.', + 'bc_classname' => 'O uso de _ no nome da classe agora está obsoleto.', + 'bc_zero_raised_to_negative_number' => 'Elevar zero a um número negativo agora está obsoleto.', + 'bc_gmp' => 'A classe GMP agora é final.', + 'bc_round' => 'Passar um modo inválido para round() agora lança um ValueError.', + 'bc_typed_constants' => 'As constantes de classe das extensões date, intl, pdo, reflection, spl, sqlite, xmlreader agora são tipadas.', + 'bc_mysqli_constants' => 'As constantes MYSQLI_SET_CHARSET_DIR, MYSQLI_STMT_ATTR_PREFETCH_ROWS, MYSQLI_CURSOR_TYPE_FOR_UPDATE, MYSQLI_CURSOR_TYPE_SCROLLABLE e MYSQLI_TYPE_INTERVAL foram removidas.', + 'bc_mysqli_functions' => 'As funções mysqli_ping(), mysqli_kill(), mysqli_refresh(), os métodos mysqli::ping(), mysqli::kill(), mysqli::refresh() e as constantes MYSQLI_REFRESH_* estão obsoletas.', + 'bc_standard' => 'stream_bucket_make_writeable() e stream_bucket_new() agora retornam uma instância de StreamBucket em vez de stdClass.', + 'bc_core' => 'Alteração de comportamento no uso de exit().', + 'bc_warnings' => 'A constante E_STRICT está obsoleta.', + + 'footer_title' => 'Melhor desempenho, sintaxe aprimorada e maior segurança de tipos.', + 'footer_description' => '

Para baixar o código-fonte do PHP 8.4, visite a página de downloads. Os binários para Windows podem ser encontrados no site PHP for Windows. A lista de alterações está registrada no ChangeLog.

+

O guia de migração está disponível no Manual do PHP. Consulte-o para uma lista detalhada de novos recursos e mudanças incompatíveis com versões anteriores.

', +]; diff --git a/releases/8.5/languages/ru.php b/releases/8.5/languages/ru.php new file mode 100644 index 0000000000..921501ccc7 --- /dev/null +++ b/releases/8.5/languages/ru.php @@ -0,0 +1,58 @@ + 'PHP 8.4 — большое обновление языка PHP. Оно содержит множество новых возможностей, таких как хуки свойств, асимметричная область видимости свойств, обновление DOM API, улучшена производительность, исправлены ошибки и многое другое.', + 'documentation' => 'Документация', + 'main_title' => 'выпущен!', + 'main_subtitle' => 'PHP 8.4 — большое обновление языка PHP.
Оно содержит множество новых возможностей, таких как хуки свойств, асимметричная область видимости свойств, обновление DOM API, улучшена производительность, исправлены ошибки и многое другое.', + 'upgrade_now' => 'Переходите на PHP 8.4!', + + 'property_hooks_title' => 'Хуки свойств', + 'property_hooks_description' => 'Хуки свойств обеспечивают поддержку вычисляемых свойств, которые могут быть понятны IDE и инструментам статического анализа, без необходимости писать DocBlock-комментарии, которые могут не совпадать. Кроме того, они позволяют выполнять надёжную предварительную или последующую обработку значений, без необходимости проверять, существует ли в классе соответствующий геттер или сеттер.', + 'asymmetric_visibility_title' => 'Асимметричная область видимости свойств', + 'asymmetric_visibility_description' => 'Область видимости записи свойства теперь может контролироваться независимо от области видимости чтения свойства, что уменьшает необходимость использования шаблонных методов-геттеров для раскрытия значения свойства без возможности его изменения извне класса.', + 'deprecated_attribute_title' => 'Атрибут #[\Deprecated]', + 'deprecated_attribute_description' => 'Новый атрибут #[\Deprecated] расширяет существующий механизм объявления сущности устаревшей для пользовательских функций, методов и констант классов.', + 'dom_additions_html5_title' => 'Новые возможности ext-dom и поддержка HTML5', + 'dom_additions_html5_description' => '

Новый DOM API, который поддерживает разбор HTML5-документов в соответствии со стандартами, исправляет несколько давних ошибок в поведении DOM и добавляет несколько функций, делающих работу с документами более удобной.

Новый DOM API доступен в пространстве имён Dom. Документы, использующие новый DOM API, могут быть созданы с помощью классов Dom\HTMLDocument и Dom\XMLDocument.

', + 'bcmath_title' => 'Объектно-ориентированный API для BCMath', + 'bcmath_description' => '

Новый объект BcMath\Number позволяет использовать объектно-ориентированный стиль и стандартные математические операторы при работе с числами произвольной точности.

Эти объекты неизменяемы и реализуют интерфейс Stringable, поэтому их можно использовать в строковых контекстах, например, echo $num.

', + 'new_array_find_title' => 'Новые функции array_*()', + 'new_array_find_description' => 'Добавлены функции array_find(), array_find_key(), array_any() и array_all().', + 'pdo_driver_specific_subclasses_title' => 'SQL-парсеры, специфичные для драйверов PDO', + 'pdo_driver_specific_subclasses_description' => 'Добавлены дочерние классы Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql, Pdo\Sqlite драйверов, наследующие PDO.', + 'new_without_parentheses_title' => 'new MyClass()->method() без скобок', + 'new_without_parentheses_description' => 'К свойствам и методам только что инициализированного объекта теперь можно обращаться, не оборачивая выражение new в круглые скобки.', + + 'new_classes_title' => 'Новые классы, интерфейсы и функции', + 'new_lazy_objects' => 'Добавлены ленивые объекты.', + 'new_jit_implementation' => 'Новая реализация JIT на основе IR Framework.', + 'new_core_functions' => 'Добавлена функция request_parse_body().', + 'new_bcmath_functions' => 'Добавлены функции bcceil(), bcdivmod(), bcfloor() и bcround().', + 'new_round_modes' => 'Добавлено перечисление RoundingMode для функции round() с 4 режимами: TowardsZero, AwayFromZero, NegativeInfinity и PositiveInfinity.', + 'new_date_functions' => 'Добавлены методы DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond(), DateTimeImmutable::createFromTimestamp(), DateTimeImmutable::getMicrosecond() и DateTimeImmutable::setMicrosecond().', + 'new_mb_functions' => 'Добавлены функции mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst() и mb_lcfirst().', + 'new_pcntl_functions' => 'Добавлены функции pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns() и pcntl_waitid().', + 'new_reflection_functions' => 'Добавлены методы ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed() и ReflectionProperty::isDynamic().', + 'new_standard_functions' => 'Добавлены функции http_get_last_response_headers(), http_clear_last_response_headers(), fpow().', + 'new_xml_functions' => 'Добавлены методы XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri() и XMLWriter::toMemory().', + 'new_grapheme_function' => 'Добавлена функция grapheme_str_split().', + + 'bc_title' => 'Устаревшая функциональность и изменения в обратной совместимости', + 'bc_pecl' => 'Модули IMAP, OCI8, PDO_OCI и pspell перенесены из ядра в PECL.', + 'bc_nullable_parameter_types' => 'Типы параметров, неявно допускающие значение null объявлены устаревшими.', + 'bc_classname' => 'Использование _ в качестве имени класса объявлено устаревшим.', + 'bc_zero_raised_to_negative_number' => 'Возведение нуля в степень отрицательного числа объявлено устаревшим.', + 'bc_gmp' => 'Класс GMP теперь является окончательным.', + 'bc_round' => 'Передача некорректного режима в функцию round() выбрасывает ошибку ValueError.', + 'bc_typed_constants' => 'Константы классов модулей date, intl, pdo, reflection, spl, sqlite и xmlreader типизированы.', + 'bc_mysqli_constants' => 'Удалены константы MYSQLI_SET_CHARSET_DIR, MYSQLI_STMT_ATTR_PREFETCH_ROWS, MYSQLI_CURSOR_TYPE_FOR_UPDATE, MYSQLI_CURSOR_TYPE_SCROLLABLE и MYSQLI_TYPE_INTERVAL.', + 'bc_mysqli_functions' => 'Функции mysqli_ping(), mysqli_kill(), mysqli_refresh(), методы mysqli::ping(), mysqli::kill(), mysqli::refresh() и константы MYSQLI_REFRESH_* объявлены устаревшими.', + 'bc_standard' => 'Функции stream_bucket_make_writeable() и stream_bucket_new() теперь возвращают экземпляр класса StreamBucket вместо stdClass.', + 'bc_core' => 'Изменение поведения языковой конструкции exit().', + 'bc_warnings' => 'Константа E_STRICT объявлена устаревшей.', + + 'footer_title' => 'Выше производительность, лучше синтаксис, надёжнее система типов.', + 'footer_description' => '

Для загрузки исходного кода PHP 8.4 посетите страницу Downloads. Бинарные файлы Windows находятся на сайте PHP for Windows. Список изменений перечислен на странице ChangeLog.

+

Руководство по миграции доступно в разделе документации. Ознакомьтесь с ним, чтобы узнать обо всех новых возможностях и изменениях, затрагивающих обратную совместимость.

', +]; diff --git a/releases/8.5/languages/tr.php b/releases/8.5/languages/tr.php new file mode 100644 index 0000000000..4630a4b3f5 --- /dev/null +++ b/releases/8.5/languages/tr.php @@ -0,0 +1,57 @@ + 'PHP 8.4, PHP dilinin büyük bir güncellemesidir. Özellik kancaları, asimetrik görünürlük, güncellenmiş bir DOM API’si, performans iyileştirmeleri, hata düzeltmeleri ve genel temizlik gibi birçok yeni özellik içerir.', + 'documentation' => 'Dokümantasyon', + 'main_title' => 'Yayımlandı!', + 'main_subtitle' => 'PHP 8.4, PHP dilinin büyük bir güncellemesidir.
Özellik kancaları, asimetrik görünürlük, güncellenmiş bir DOM API’si, performans iyileştirmeleri, hata düzeltmeleri ve genel temizlik gibi birçok yeni özellik içerir.', + 'upgrade_now' => 'PHP 8.4’e şimdi geçiş yapın!', + + 'property_hooks_title' => 'Özellik Kancaları', + 'property_hooks_description' => 'Özellik kancaları, hesaplanmış özelliklerin (computed properties) IDE’ler ve statik analiz araçları tarafından doğal bir şekilde anlaşılmasını sağlar, böylece zamanla geçersiz hale gelebilecek doküman açıklamaları yazmaya gerek kalmaz. Bunun yanı sıra, sınıf içinde eşleşen bir getter ya da setter kontrolüne ihtiyaç duymadan, değerlerin güvenilir bir şekilde işlenmesini (öncesinde veya sonrasında) mümkün hale getirir.', + 'asymmetric_visibility_title' => 'Asimetrik Görünürlük', + 'asymmetric_visibility_description' => 'Artık bir özelliği yazma yetkisi, o özelliği okuma yetkisinden bağımsız olarak kontrol edilebilir. Bu sayede, bir özelliğin dışarıdan değiştirilmesini engelleyerek sadece okunabilir hale getirmek için gereksiz ve tekrarlayan getter metotları yazma ihtiyacı ortadan kalkar.', + 'deprecated_attribute_title' => '#[\Deprecated] Özelliği', + 'deprecated_attribute_description' => 'Yeni #[\Deprecated] özelliği, PHP’nin mevcut kullanımdan kaldırma mekanizmasını kullanıcı tanımlı fonksiyonlar, metotlar ve sınıf sabitleri için kullanılabilir hale getirir.', + 'dom_additions_html5_title' => 'Yeni ext-dom Özellikleri ve HTML5 Desteği', + 'dom_additions_html5_description' => '

Yeni DOM API, HTML5 dokümanlarını standartlara uygun şekilde işlemenize olanak tanır, DOM işlevselliğindeki uzun süredir devam eden uyumluluk hatalarını giderir ve dokümanlarla çalışmayı daha kolay hale getiren bir dizi yeni fonksiyon ekler.

Yeni DOM API, Dom isim alanı içerisinde kullanılabilir. Bu API ile çalışmak için HTML ve XML içerikleri, Dom\HTMLDocument ve Dom\XMLDocument sınıfları kullanılarak oluşturulabilir.

', 'bcmath_title' => 'BCMath için Nesne API’si', + 'bcmath_description' => '

Yeni BcMath\Number nesnesi, yüksek doğruluk gerektiren sayılarla çalışırken nesne yönelimli kullanım ve standart matematiksel operatörlerin desteklenmesini sağlar.

Bu nesneler değişmezdir ve Stringable arayüzünü uygular, böylece echo $num gibi metin bağlamlarında kullanılabilirler.

', + 'new_array_find_title' => 'Yeni array_*() Fonksiyonları', + 'new_array_find_description' => 'Yeni fonksiyonlar: array_find(), array_find_key(), array_any() ve array_all() kullanılabilir.', + 'pdo_driver_specific_subclasses_title' => 'PDO Sürücüsüne Özel Alt Sınıflar', + 'pdo_driver_specific_subclasses_description' => 'PDO için yeni alt sınıflar: Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql ve Pdo\Sqlite mevcut.', + 'new_without_parentheses_title' => 'new MyClass()->method() Parantezsiz Kullanım', + 'new_without_parentheses_description' => 'Yeni oluşturulan bir nesnenin özelliklerine ve metotlarına, new ifadesini parantez içine almadan doğrudan erişilebilir.', + + 'new_classes_title' => 'Yeni Sınıflar, Arayüzler ve Fonksiyonlar', + 'new_lazy_objects' => 'Yeni Lazy Objects.', + 'new_jit_implementation' => 'IR Framework tabanlı yeni JIT uygulaması.', + 'new_core_functions' => 'Yeni request_parse_body() fonksiyonu.', + 'new_bcmath_functions' => 'Yeni bcceil(), bcdivmod(), bcfloor() ve bcround() fonksiyonları.', + 'new_round_modes' => 'round() için 4 yeni yuvarlama modu içeren RoundingMode enumu: TowardsZero, AwayFromZero, NegativeInfinity ve PositiveInfinity.', + 'new_date_functions' => 'Yeni metotlar: DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond(), DateTimeImmutable::createFromTimestamp(), DateTimeImmutable::getMicrosecond() ve DateTimeImmutable::setMicrosecond().', + 'new_mb_functions' => 'Yeni fonksiyonlar: mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst() ve mb_lcfirst().', + 'new_pcntl_functions' => 'Yeni fonksiyonlar: pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns() ve pcntl_waitid().', + 'new_reflection_functions' => 'Yeni metotlar: ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed() ve ReflectionProperty::isDynamic().', + 'new_standard_functions' => 'Yeni fonksiyonlar: http_get_last_response_headers(), http_clear_last_response_headers() ve fpow().', + 'new_xml_functions' => 'Yeni metotlar: XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri() ve XMLWriter::toMemory().', + 'new_grapheme_function' => 'Yeni grapheme_str_split() fonksiyonu.', + + 'bc_title' => 'Kullanımdan Kaldırmalar ve Geriye Dönük Uyumluluk Kırılmaları', + 'bc_pecl' => 'IMAP, OCI8, PDO_OCI ve pspell uzantıları ayrılmış ve PECL’e taşınmıştır.', + 'bc_nullable_parameter_types' => 'Varsayılan olarak nullable olan parametre türleri artık desteklenmiyor.', + 'bc_classname' => 'Bir sınıf adı olarak _ kullanımı artık desteklenmiyor.', + 'bc_zero_raised_to_negative_number' => 'Sıfırın negatif bir sayıya üssü artık desteklenmemektedir.', + 'bc_gmp' => 'GMP sınıfı artık final olarak tanımlanmıştır.', + 'bc_round' => 'round() fonksiyonuna geçersiz bir mod gönderildiğinde artık ValueError fırlatır.', + 'bc_typed_constants' => 'date, intl, pdo, reflection, spl, sqlite ve xmlreader uzantılarındaki sınıf sabitleri artık türlendirilmiş durumda.', + 'bc_mysqli_constants' => 'MYSQLI_SET_CHARSET_DIR, MYSQLI_STMT_ATTR_PREFETCH_ROWS, MYSQLI_CURSOR_TYPE_FOR_UPDATE gibi sabitler artık kaldırılmıştır.', + 'bc_mysqli_functions' => 'mysqli_ping(), mysqli_kill(), mysqli_refresh() fonksiyonları, mysqli::ping(), mysqli::kill(), mysqli::refresh() metotları ve MYSQLI_REFRESH_* sabitleri artık kullanımdan kaldırıldı.', + 'bc_standard' => 'stream_bucket_make_writeable() ve stream_bucket_new() artık stdClass yerine bir StreamBucket objesi döndürüyor.', + 'bc_core' => 'exit() davranış değişikliği.', + 'bc_warnings' => 'E_STRICT sabiti artık kullanımdan kaldırılmıştır.', + + 'footer_title' => 'Daha iyi performans, daha temiz sözdizimi, gelişmiş tür güvenliği.', + 'footer_description' => '

PHP 8.4 kaynak dosyalarını indirmek için indirme sayfasını ziyaret edin. Windows için çalıştırılabilir dosyaları PHP for Windows sitesinden indirebilirsiniz. Tüm değişikliklerin listesi ChangeLog içinde kayıtlıdır.

+

Detaylı bilgi için göç rehberine göz atabilirsiniz.

', +]; \ No newline at end of file diff --git a/releases/8.5/languages/uk.php b/releases/8.5/languages/uk.php new file mode 100644 index 0000000000..2fea0f7a74 --- /dev/null +++ b/releases/8.5/languages/uk.php @@ -0,0 +1,58 @@ + 'PHP 8.4 — це значне оновлення мови PHP. Воно містить багато нових можливостей, таких як хуки властивостей, асиметричну область видимості, оновлений DOM API, покращення продуктивності, виправлення помилок і загальний рефакторинг.', + 'documentation' => 'Документація', + 'main_title' => 'Випущено!', + 'main_subtitle' => 'PHP 8.4 — це значне оновлення мови PHP.
Воно містить багато нових можливостей, таких як хуки властивостей, асиметричну область видимості, оновлений DOM API, покращення продуктивності, виправлення помилок і загальний рефакторинг.', + 'upgrade_now' => 'Оновіться до PHP 8.4 прямо зараз!', + + 'property_hooks_title' => 'Хуки властивостей', + 'property_hooks_description' => 'Хуки властивостей забезпечують підтримку обчислюваних властивостей, що можуть бути зрозумілі IDE та інструментам статичного аналізу, без необхідності зазначення DocBlock-коментарів, які можуть містити невідповідності. Крім того, вони дозволяють надійно виконувати попередню або післяобробку значень, без необхідності перевіряти, чи існує у класі відповідний геттер або сеттер.', + 'asymmetric_visibility_title' => 'Асиметрична область видимості властивостей', + 'asymmetric_visibility_description' => 'Область видимості для запису до властивості тепер може контролюватися незалежно від області видимості для читання, що зменшує потребу у шаблонних методах отримання значення властивості, не дозволяючи змінювати її ззовні класу.', + 'deprecated_attribute_title' => 'Атрибут #[\Deprecated]', + 'deprecated_attribute_description' => 'Новий атрибут #[\Deprecated] дозволяє використовувати існуючий механізм оголошення функціональності PHP застарілою для функцій, методів і констант класів, визначених користувачем.', + 'dom_additions_html5_title' => 'Нові можливості розширення ext-dom і підтримка HTML5', + 'dom_additions_html5_description' => '

Новий DOM API, який включає підтримку стандартів для синтаксичного аналізу HTML5-документів, виправляє кілька давніх помилок сумісності у поведінці DOM та додає кілька нових функцій для зручнішої роботи з документами.

Новий DOM API доступний у просторі імен Dom. Документи, що використовують новий DOM API, можна створювати за допомогою класів Dom\HTMLDocument і Dom\XMLDocument.

', + 'bcmath_title' => 'Об\'єктний API для BCMath', + 'bcmath_description' => '

Новий об\'єкт BcMath\Number дозволяє використовувати об\'єктно-орієнтовану модель і стандартні математичні оператори під час роботи з числами довільної точності.

Ці об\'єкти є незмінними і реалізують інтерфейс Stringable, тому їх можна використовувати у контекстах рядків, наприклад, у виразі echo $num.

', + 'new_array_find_title' => 'Нові функції array_*()', + 'new_array_find_description' => 'Нові функції array_find(), array_find_key(), array_any() і array_all().', + 'pdo_driver_specific_subclasses_title' => 'Специфічні аналізатори синтаксису SQL для драйверів PDO', + 'pdo_driver_specific_subclasses_description' => 'Нові підкласи Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql і Pdo\Sqlite для PDO.', + 'new_without_parentheses_title' => 'new MyClass()->method() без дужок', + 'new_without_parentheses_description' => 'До властивостей і методів нового екземпляра об\'єкта тепер можна звертатися, не беручи вираз new у круглі дужки.', + + 'new_classes_title' => 'Нові класи, інтерфейси та функції', + 'new_lazy_objects' => 'Нові ліниві об\'єкти.', + 'new_jit_implementation' => 'Нова реалізація JIT на основі IR Framework.', + 'new_core_functions' => 'Нова функція request_parse_body().', + 'new_bcmath_functions' => 'Нові функції bcceil(), bcdivmod(), bcfloor() і bcround().', + 'new_round_modes' => 'Нове перерахування RoundingMode для функції round(), що містить 4 нових режими округлення TowardsZero, AwayFromZero, NegativeInfinity і PositiveInfinity.', + 'new_date_functions' => 'Нові методи DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond(), DateTimeImmutable::createFromTimestamp(), DateTimeImmutable::getMicrosecond() і DateTimeImmutable::setMicrosecond().', + 'new_mb_functions' => 'Нові функції mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst() і mb_lcfirst().', + 'new_pcntl_functions' => 'Нові функції pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns() і pcntl_waitid().', + 'new_reflection_functions' => 'Нові методи ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed() і ReflectionProperty::isDynamic().', + 'new_standard_functions' => 'Нові функції http_get_last_response_headers(), http_clear_last_response_headers() і fpow().', + 'new_xml_functions' => 'Нові методи XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri() і XMLWriter::toMemory().', + 'new_grapheme_function' => 'Нова функція grapheme_str_split().', + + 'bc_title' => 'Застаріла функціональність і зміни у зворотній сумісності', + 'bc_pecl' => 'Розширення IMAP, OCI8, PDO_OCI та pspell вилучено і перенесено до PECL.', + 'bc_nullable_parameter_types' => 'Типи параметрів, що неявно допускають значення null, оголошено застарілими.', + 'bc_classname' => 'Можливість використання символу _ у якості імені класу оголошено застарілою.', + 'bc_zero_raised_to_negative_number' => 'Можливість піднесення нуля до від\'ємного показника степеня оголошено застарілою.', + 'bc_gmp' => 'Клас GMP оголошено фінальним.', + 'bc_round' => 'Передача недійсного режиму до функції round() тепер викликає ValueError.', + 'bc_typed_constants' => 'Типізовано константи класів розширень date, intl, pdo, reflection, spl, sqlite, xmlreader.', + 'bc_mysqli_constants' => 'Константи MYSQLI_SET_CHARSET_DIR, MYSQLI_STMT_ATTR_PREFETCH_ROWS, MYSQLI_CURSOR_TYPE_FOR_UPDATE, MYSQLI_CURSOR_TYPE_SCROLLABLE і MYSQLI_TYPE_INTERVAL оголошено застарілими.', + 'bc_mysqli_functions' => 'Функції mysqli_ping(), mysqli_kill(), mysqli_refresh(), методи mysqli::ping(), mysqli::kill(), mysqli::refresh() і константу MYSQLI_REFRESH_* оголошено застарілими.', + 'bc_standard' => 'Функції stream_bucket_make_writeable() і stream_bucket_new() тепер повертають екземпляр класу StreamBucket замість stdClass.', + 'bc_core' => 'Змінено поведінку конструкції exit().', + 'bc_warnings' => 'Константу E_STRICT оголошено застарілою.', + + 'footer_title' => 'Краща продуктивність, кращий синтаксис, покращена безпека типів.', + 'footer_description' => '

Для завантаження початкового коду PHP 8.4 відвідайте сторінку downloads. Двійкові файли Windows можна знайти на сайті PHP for Windows Перелік змін описано на сторінці ChangeLog.

+

Посібник з міграції знаходиться у посібнику з PHP. Будь ласка, ознайомтеся з ним, щоб отримати детальніший список нових функцій і несумісних змін.

', +]; diff --git a/releases/8.5/languages/zh.php b/releases/8.5/languages/zh.php new file mode 100644 index 0000000000..8200312c47 --- /dev/null +++ b/releases/8.5/languages/zh.php @@ -0,0 +1,65 @@ + 'PHP 8.4 是 PHP 语言的一次重大更新。它包含了许多新功能,例如属性钩子、不对称可见性、更新的 DOM API、性能改进、错误修复和常规清理等。', + 'documentation' => '文档', + 'main_title' => '已发布!', + 'main_subtitle' => 'PHP 8.4 是 PHP 语言的一次重大更新。
它包含许多新功能,例如属性钩子、不对称可见性、更新的 DOM API、性能改进、错误修复和常规清理等。', + 'upgrade_now' => '更新到 PHP 8.4 !', + + 'property_hooks_title' => '属性钩子', + 'property_hooks_description' => '属性钩子提供对计算属性的支持,这些属性可以被 IDE 和静态分析工具直接理解,而无需编写可能会失效的 docblock 注释。此外,它们允许可靠地预处理或后处理值,而无需检查类中是否存在匹配的 getter 或 setter。', + 'asymmetric_visibility_title' => '不对称可见性', + 'asymmetric_visibility_description' => '现在可以独立地控制写入属性的作用域和读取属性的作用域,减少了需要编写繁琐的 getter 方法来公开属性值而不允许从类外部修改属性的需求。', + 'deprecated_attribute_title' => '#[\Deprecated] 属性', + 'deprecated_attribute_description' => '新的 #[\Deprecated] 属性使 PHP 的现有弃用机制可用于用户定义的函数、方法和类常量。', + 'dom_additions_html5_title' => '新的 ext-dom 功能和 HTML5 支持', + 'dom_additions_html5_description' => '

新的 DOM API 包括符合标准的支持,用于解析 HTML5 文档,修复了 DOM 功能行为中的几个长期存在的规范性错误,并添加了几个函数,使处理文档更加方便。

新的 DOM API 可以在 Dom 命名空间中使用。使用新的 DOM API 可以使用 Dom\HTMLDocumentDom\XMLDocument 类创建文档。

', + 'bcmath_title' => 'BCMath 的对象 API', + 'bcmath_description' => '

新的 BcMath\Number 对象使在处理任意精度数字时可以使用面向对象的方式和标准的数学运算符。

这些对象是不可变的,并实现了 Stringable 接口,因此可以在字符串上下文中使用,如 echo $num

', + 'new_array_find_title' => '新的 array_*() 函数', + 'new_array_find_description' => '新增函数 array_find()array_find_key()array_any()array_all()。', + 'pdo_driver_specific_subclasses_title' => 'PDO 驱动程序特定子类', + 'pdo_driver_specific_subclasses_description' => '新的 Pdo\DblibPdo\FirebirdPdo\MySqlPdo\OdbcPdo\PgsqlPdo\Sqlite 的子类可用。', + 'new_without_parentheses_title' => 'new MyClass()->method() 不需要括号', + 'new_without_parentheses_description' => '现在可以在不使用括号包裹 new 表达式的情况下访问新实例化对象的属性和方法。', + + 'new_classes_title' => '新的类、接口和函数', + 'new_lazy_objects' => '新的 延迟对象。', + 'new_jit_implementation' => '基于 IR 框架的新 JIT 实现。', + 'new_core_functions' => '新增 request_parse_body() 函数。', + 'new_bcmath_functions' => '新增 bcceil()bcdivmod()bcfloor()bcround() 函数。', + 'new_round_modes' => '新增 RoundingMode 枚举用于 round(),包括 4 个新的舍入模式 TowardsZeroAwayFromZeroNegativeInfinityPositiveInfinity。', + 'new_date_functions' => '新增 DateTime::createFromTimestamp()DateTime::getMicrosecond()DateTime::setMicrosecond()DateTimeImmutable::createFromTimestamp()DateTimeImmutable::getMicrosecond()DateTimeImmutable::setMicrosecond() 方法。', + 'new_mb_functions' => '新增 mb_trim()mb_ltrim()mb_rtrim()mb_ucfirst()mb_lcfirst() 函数。', + 'new_pcntl_functions' => '新增 pcntl_getcpu()pcntl_getcpuaffinity()pcntl_getqos_class()pcntl_setns()pcntl_waitid() 函数。', + 'new_reflection_functions' => '新增 ReflectionClassConstant::isDeprecated()ReflectionGenerator::isClosed()ReflectionProperty::isDynamic() 方法。', + 'new_standard_functions' => '新增 http_get_last_response_headers()http_clear_last_response_headers()fpow() 函数。', + 'new_xml_functions' => '新增 XMLReader::fromStream()XMLReader::fromUri()XMLReader::fromString()XMLWriter::toStream()XMLWriter::toUri()XMLWriter::toMemory() 方法。', + 'new_grapheme_function' => '新增 grapheme_str_split() 函数。', + + 'bc_title' => '弃用和向后不兼容', + 'bc_pecl' => 'IMAP、OCI8、PDO_OCI 和 pspell 扩展已从 PHP 中分离并移至 PECL。', + 'bc_nullable_parameter_types' => '隐式可空参数类型现已弃用。', + 'bc_classname' => '使用 _ 作为类名现已弃用。', + 'bc_zero_raised_to_negative_number' => '将零的负数次幂现已弃用。', + 'bc_gmp' => 'GMP 类现已是 final 类。', + 'bc_round' => '向 round() 传递无效模式将抛出 ValueError。', + 'bc_typed_constants' => '来自扩展 dateintlpdoreflectionsplsqlitexmlreader 的类常量现在是有类型的。', + 'bc_mysqli_constants' => '已删除 MYSQLI_SET_CHARSET_DIRMYSQLI_STMT_ATTR_PREFETCH_ROWSMYSQLI_CURSOR_TYPE_FOR_UPDATEMYSQLI_CURSOR_TYPE_SCROLLABLEMYSQLI_TYPE_INTERVAL 常量。', + 'bc_mysqli_functions' => '已弃用 mysqli_ping()mysqli_kill()mysqli_refresh() 函数,mysqli::ping()mysqli::kill()mysqli::refresh() 方法,以及 MYSQLI_REFRESH_* 常量。', + 'bc_standard' => 'stream_bucket_make_writeable()stream_bucket_new() 现在返回 StreamBucket 实例而不是 stdClass。', + 'bc_core' => 'exit() 行为变更。', + 'bc_warnings' => 'E_STRICT 常量已弃用。', + + 'footer_title' => '更好的性能、更好的语法、改进类型安全。', + 'footer_description' => '

请访问 下载 页面下载 PHP 8.4 源代码。 + 在 PHP for Windows 站点中可找到 Windows 二进制文件。 + ChangeLog 中有变更历史记录清单。

+

PHP 手册中有 迁移指南。 + 请参考它描述的新功能详细清单、向后不兼容的变化。

', +]; diff --git a/releases/8.5/nl.php b/releases/8.5/nl.php new file mode 100644 index 0000000000..1a972eecb8 --- /dev/null +++ b/releases/8.5/nl.php @@ -0,0 +1,6 @@ + +
+
+
+ +
+
+
+ +
+
+
+ + +
+
+
+ +
+

+ + +
+
+
2,726
+ +
+
+
125
+ +
+
+
35
+ +
+
+
950+
+ +
+
+
+ +
+
+

+ +
+ + [ + 'textKey' => 'pipe_operator', + 'rfcs' => [ + 'https://wiki.php.net/rfc/pipe-operator-v3' + ], + 'tags' => [ + 'tag_new_syntax' => 'php8-tag-syntax', + ], + ], + + 'url_parsing_api' => [ + 'textKey' => 'url_parsing_api', + 'rfcs' => [ + 'https://wiki.php.net/rfc/url_parsing_api' + ], + 'tags' => [ + 'tag_new_ext' => 'php8-tag-new-ext', + ], + ], + + 'clone_with' => [ + 'textKey' => 'clone_with', + 'rfcs' => [ + 'https://wiki.php.net/rfc/clone_with_v2' + ], + 'tags' => [ + 'tag_new_feature' => 'php8-tag-new-feat', + ], + ], + + 'fcc_in_const_expr' => [ + 'textKey' => 'fcc_in_const_expr', + 'rfcs' => [ + 'https://wiki.php.net/rfc/closures_in_const_expr', + 'https://wiki.php.net/rfc/fcc_in_const_expr', + ], + 'tags' => [ + 'tag_new_feature' => 'php8-tag-new-feat', + 'tag_new_syntax' => 'php8-tag-syntax', + ], + ], + + 'curl_share_persistence_improvement' => [ + 'textKey' => 'curl_share_persistence_improvement', + 'rfcs' => [ + 'https://wiki.php.net/rfc/curl_share_persistence', + 'https://wiki.php.net/rfc/curl_share_persistence_improvement', + ], + 'tags' => [ + 'tag_new_feature' => 'php8-tag-new-feat', + ], + ], + + 'array_first_last' => [ + 'textKey' => 'array_first_last', + 'rfcs' => [ + 'https://wiki.php.net/rfc/array_first_last', + ], + 'tags' => [ + 'tag_new_feature' => 'php8-tag-new-feat', + ], + ], + + 'no_discard' => [ + 'textKey' => 'no_discard', + 'rfcs' => [ + 'https://wiki.php.net/rfc/marking_return_value_as_important', + ], + 'tags' => [ + 'tag_new_attr' => 'php8-tag-new-attr', + ], + ], + ]; + ?> + + $feature): ?> +
+
+

+
+ $tagClass): ?> + + + + RFC + +
+

+
+ +
+
+
PHP < 8.5
+
+ +
+
+
+
+
PHP 8.5
+
+ +
+
+
+
+ + + +
+ +
+
+

+ +
+ + [ + 'textKey' => 'fatal_error_backtrace', + 'rfcs' => [ + 'https://wiki.php.net/rfc/error_backtraces_v2', + ], + 'tags' => [ + 'tag_new_feature' => 'php8-tag-new-feat', + ], + ], + 'get_error_exception_handler' => [ + 'textKey' => 'get_error_exception_handler', + 'rfcs' => [ + 'https://wiki.php.net/rfc/get-error-exception-handler', + ], + 'tags' => [ + 'tag_new_feature' => 'php8-tag-new-feat', + ], + ], + 'value_error_change' => [ + 'textKey' => 'value_error_change', + 'rfcs' => [], + 'tags' => [ + 'tag_behavior_change' => 'php8-tag-behavior_change', + ], + ], + + + ]; + ?> + + $feature): ?> +
+

+
+ $tagClass): ?> + + + + RFC + +
+

+
+ +
+ +
+
+

+ +
+ + [ + 'textKey' => 'attr_on_consts', + 'rfcs' => [ + 'https://wiki.php.net/rfc/attributes-on-constants', + ], + 'tags' => [ + 'tag_new_feature' => 'php8-tag-new-feat', + ], + ], + 'cpp_on_final_props' => [ + 'textKey' => 'cpp_on_final_props', + 'rfcs' => [ + 'https://wiki.php.net/rfc/final_promotion', + ], + 'tags' => [ + 'tag_new_syntax' => 'php8-tag-syntax', + ], + ], + 'static_aviz' => [ + 'textKey' => 'static_aviz', + 'rfcs' => [ + 'https://wiki.php.net/rfc/static-aviz', + ], + 'tags' => [ + 'tag_new_syntax' => 'php8-tag-syntax', + 'tag_new_feature' => 'php8-tag-new-feat', + ], + ], + 'override_attr_props' => [ + 'textKey' => 'override_attr_props', + 'rfcs' => [ + 'https://wiki.php.net/rfc/override_properties', + ], + 'tags' => [ + 'tag_new_syntax' => 'php8-tag-syntax', + 'tag_new_feature' => 'php8-tag-new-feat', + ], + ], + ]; + ?> + + $feature): ?> +
+
+
+

+
+ $tagClass): ?> + + + + RFC + +
+

+
+ +
+
PHP 8.5
+
+ +
+
+
+
+ +
+ +
+

+ + +
+
+
2025 Nov 20
+
+
+
+
2027 Dec 31
+
+
+
+
2029 Dec 31
+
+
+
+
+ +
+
+

+ +
+
+ + + +
+
+ +
+
+ + trim(...) + |> (fn($string) => str_replace(' ', '-', $string)) + |> (fn($string) => str_replace(['.', '/', '…'], '', $string)) + |> strtolower(...); +var_dump($output); +// string(19) "some-kind-of-string" +PHP; + +$return['url_parsing_api']['before'] = <<<'PHP' +$components = parse_url('https://php.net/releases/8.5/en.php'); +var_dump($components['host']); +// string(7) "php.net" +PHP; + +$return['url_parsing_api']['after'] = <<<'PHP' +use Uri\Rfc3986\Uri; +$uri = new Uri('https://php.net/releases/8.5/en.php'); +var_dump($uri->getHost()); +// string(7) "php.net" +PHP; + + +$return['clone_with']['before'] = <<<'PHP' +final readonly class PhpVersion +{ + public function __construct( + public string $version = 'PHP 8.4', + ) {} + public function withVersion(string $version): self + { + $newObject = clone $this; + $newObject->version = $version; + return $newObject; + } +} +$version = new PhpVersion(); +var_dump($version->version); +// string(7) "PHP 8.4" +var_dump($version->withVersion('PHP 8.5')->version); +// Fatal error: Uncaught Error: Cannot modify readonly property PhpVersion::$version +PHP; + +$return['clone_with']['after'] = <<<'PHP' +final readonly class PhpVersion +{ + public function __construct( + public string $version = 'PHP 8.4', + ) {} + public function withVersion(string $version): self + { + return clone($this, [ + 'version' => $version, + ]); + } +} +$version = new PhpVersion(); +var_dump($version->version); +// string(7) "PHP 8.4" +var_dump($version->withVersion('PHP 8.5')->version); +// string(7) "PHP 8.5" +var_dump($version->version); +// string(7) "PHP 8.4" +PHP; + + +$return['fcc_in_const_expr']['before'] = <<<'PHP' +final class CalculatorTest extends \PHPUnit\Framework\TestCase +{ + #[DataProvider('subtractionProvider')] + public function testSubtraction( + int $minuend, + int $subtrahend, + int $result + ): void + { + $this->assertSame( + $result, + Calculator::subtract($minuend, $subtrahend) + ); + } + public static function subtractionProvider(): iterable + { + for ($i = -10; $i <= 10; $i++) { + yield [$i, $i, 0]; + yield [$i, 0, $i]; + yield [0, $i, -$i]; + } + } +} +PHP; + +$return['fcc_in_const_expr']['after'] = <<<'PHP' +final class CalculatorTest +{ + #[Test\CaseGenerator(static function (): iterable + { + for ($i = -10; $i <= 10; $i++) { + yield [$i, $i, 0]; + yield [$i, 0, $i]; + yield [0, $i, -$i]; + } + })] + public function testSubtraction( + int $minuend, + int $subtrahend, + int $result + ) + { + \assert( + Calculator::subtract($minuend, $subtrahend) === $result + ); + } +} +PHP; + +$return['curl_share_persistence_improvement']['before'] = <<<'PHP' +$sh = curl_share_init(); +curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS); +curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT); +$ch1 = curl_init('https://php.net/'); +curl_setopt($ch1, CURLOPT_SHARE, $sh); +curl_exec($ch1); +$ch2 = curl_init('https://thephp.foundation/'); +curl_setopt($ch2, CURLOPT_SHARE, $sh); +curl_exec($ch2); +PHP; + +$return['curl_share_persistence_improvement']['after'] = <<<'PHP' +$sh = curl_share_init_persistent([ + CURL_LOCK_DATA_DNS, + CURL_LOCK_DATA_CONNECT +]); +$ch1 = curl_init('https://php.net/'); +curl_setopt($ch1, CURLOPT_SHARE, $sh); +curl_exec($ch1); +$ch2 = curl_init('https://thephp.foundation/'); +curl_setopt($ch2, CURLOPT_SHARE, $sh); +curl_exec($ch2); +PHP; + + +$return['array_first_last']['before'] = <<<'PHP' +$php = [ + 'php-82' => ['state' => 'security', 'branch' => 'PHP-8.2'], + 'php-83' => ['state' => 'active', 'branch' => 'PHP-8.3'], + 'php-84' => ['state' => 'active', 'branch' => 'PHP-8.4'], + 'php-85' => ['state' => 'upcoming', 'branch' => 'PHP-8.5'], +]; +$upcomingRelease = null; +foreach ($php as $key => $version) { + if ($version['state'] === 'upcoming') { + $upcomingRelease = $version; + break; + } +} +var_dump($upcomingRelease); +PHP; + +$return['array_first_last']['after'] = <<<'PHP' +$php = [ + 'php-82' => ['state' => 'security', 'branch' => 'PHP-8.2'], + 'php-83' => ['state' => 'active', 'branch' => 'PHP-8.3'], + 'php-84' => ['state' => 'active', 'branch' => 'PHP-8.4'], + 'php-85' => ['state' => 'upcoming', 'branch' => 'PHP-8.5'], +]; +$upcomingRelease = array_first( + array_filter( + $php, + static fn($version) => $version['state'] === 'upcoming' + ) +); +var_dump($upcomingRelease); +PHP; + + +$return['no_discard']['before'] = <<<'PHP' +function getPhpVersion(): string +{ + return 'PHP 8.4'; +} +getPhpVersion(); // No Errors +PHP; + +$return['no_discard']['after'] = <<<'PHP' +#[\NoDiscard] +function getPhpVersion(): string +{ + return 'PHP 8.5'; +} +getPhpVersion(); +// Warning: The return value of function getPhpVersion() should either be used or intentionally ignored by casting it as (void) +PHP; + + +$return['attr_on_consts'] = <<<'PHP' +#[\MyAttribute] +const Example1 = 1; +PHP; + +$return['cpp_on_final_props'] = <<<'PHP' +class A { + public function __construct( + final $p1, + final int $p2, + final readonly int $p3 + ) { + // ... + } +} +PHP; + + +$return['static_aviz'] = <<<'PHP' +class Example +{ + public private(set) static string $classTitle = 'Example class'; + + // Implicitly public-read, just like object properties. + protected(set) static int $counter = 0; + + public static function changeName(string $name): void + { + // From private scope, so this is allowed. + self::$classTitle = $name; + } +} + +print Example::$classTitle; // Allowed. + +Example::$classTitle = 'Nope'; // Disallowed. +PHP; + +$return['override_attr_props'] = <<<'PHP' +class P { + abstract public mixed $p { get; } +} + +class C extends P { + #[\Override] + public mixed $p; +} +PHP; + +return $return; diff --git a/releases/8.5/tr.php b/releases/8.5/tr.php new file mode 100644 index 0000000000..8ccb1cb36e --- /dev/null +++ b/releases/8.5/tr.php @@ -0,0 +1,5 @@ + span { + display: inline-block; + padding: .2rem 1rem; + border-radius: .5rem; +} + +.php8-section-crossing .php8-change { + +} + +.php8-tag-syntax { + background: #dd3c93; +} +.php8-tag-new-ext { + background: #10B981; +} + +.php8-tag-new-feat { + background: #3B82F6; +} +.php8-tag-rfc { + background: #8B5CF6; +} + +.php8-tag-behavior_change { + background: #F59E0B; +} +.php8-tag-new-attr { + background: #06B6D4; +} + +#layout-content .php8-tag-rfc a { + color: white; +} + +.php8-section_dark { + background-color: var(--dark-blue-color); + background-color: var(--dark-blue-color); + /* Trick for darkening the background color, there is no gradient. + * Can be refactored once color-mix becomes widely supported. + * See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix */ + background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)); + color: #fff; +} + +.php8-section_dark .php8-subtitle { + color: #e8e8e8; +} + +.section-title { + font-size: 3rem; + line-height: 1.0714285714; + font-weight: 600; + letter-spacing: -0.005em; +} + +.php8-section__content { + width: 820px; + max-width: 100%; + margin: 0 auto; +} + +.php8-section_header .php8-section__content { + width: 1050px; +} + +.php8-section_dark * { + color: #fff; +} + +.php8-section_light { + background-color: #fff; +} + +.php8-section_header { + position: relative; + padding-top: 64px; + margin-top: -1.5rem; + font-family: Helvetica, Arial, sans-serif; + min-height: calc(100vh - 128px - 4.5rem); +} + +.php8-section_footnotes { + font-family: Helvetica, Arial, sans-serif; + padding: 0; + margin: 0 0 -1.5em; +} + +.php8-section_footer { + font-family: Helvetica, Arial, sans-serif; +} + +div .php8-section_footnotes ul li { + margin: 0; + font-size: .8rem; + list-style-type: none; +} + +.php8-section img { + max-width: 100%; +} + +.php85-logo { + vertical-align: middle; +} + + +.php8-title { + margin-top: 1em; + font-size: 2.8rem; + font-weight: lighter; + font-stretch: normal; + font-style: normal; + line-height: 1.07; + letter-spacing: -1.5px; +} + +@media (max-width: 480px) { + .php8-title { + font-size: 50px; + } + .section-title { + font-size: 2rem; + line-height: 1.0714285714; + font-weight: 600; + letter-spacing: -0.005em; + } + + .php8-section-condensed { + padding: 1rem; + } +} + +.php8-subtitle { + margin-top: 2rem; + font-size: 18px; + font-weight: 300; + font-stretch: normal; + font-style: normal; + line-height: 1.43; + letter-spacing: normal; + text-align: center; +} + +@media (max-width: 480px) { + .php8-title { + font-size: 1.5rem; + line-height: 1.2; + letter-spacing: 0; + } + .php8-subtitle { + font-size: 1rem; + } + +} + + +@media (max-width: 992px) { + .php8-title { + font-size: 1.8rem; + } + .php8-subtitle { + font-size: 1.15rem; + } +} + +.php8-h2 { + display: inline-block; + font-size: 31px; + font-weight: bold; + font-stretch: normal; + font-style: normal; + line-height: 1.29; + letter-spacing: -0.5px; + overflow: visible; +} + +.php8-change h3::after { + display: none; +} + +.php8-change { + margin-top: 2rem; + border-top: 1px solid #ccc; +} + + +.php8-h2_margin-top { + margin-top: 48px; +} + +.php8-change h3 { + margin-bottom: 1rem; + line-height: 1; +} + +.php8-section_dark .php8-h2 { + display: block; + color: #fff; +} + +.php8-button-wrapper { + margin-top: 48px; +} + +.php8-button { + display: inline-block; + padding: 16px 46px; + border-radius: 30px; + border: none; + background-color: var(--dark-blue-color); + color: #fff !important; + text-decoration: none !important; + font-size: 20px; + font-weight: bold; + font-stretch: normal; + font-style: normal; + line-height: 1.4; + letter-spacing: normal; + text-align: center; +} + +.php8-button + .php8-button { + margin-left: 1rem; + margin-top: 1rem +} + +@media (max-width: 640px) { + .php8-button { + padding: 16px 36px; + } +} + +.php8-button_light { + background-color: #fff !important; + color: #27282c !important; +} + +.php8-footer__content { + margin-top: 64px; + text-align: left; + font-size: 15px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: 1.6; + letter-spacing: normal; +} + +#layout-content .php8-section_dark a:link, +#layout-content .php8-section_dark a:visited { + color: #fff; + transition: box-shadow 0.28s; +} + +#layout-content .php8-section_dark a:hover, +#layout-content .php8-section_dark a:focus { + color: #fff; + border-color: #fff; +} + +a.php8-button:hover, a.php8-button:focus { + box-shadow: 0 0 2rem rgba(255, 255, 255, .5); +} + +.php8-section p:last-child { + margin-bottom: 0; +} + +.display-block-lg { + display: block; +} +.display-none-lg { + display: none; +} + +@media (max-width: 1000px) { + .display-block-md { + display: block; + } + .display-none-md { + display: none; + } +} + +@media (max-width: 640px) { + .display-block-sm { + display: block; + } + .display-none-sm { + display: none; + } +} + +.php8-rfc { + font-size: 15px; + font-weight: normal; + line-height: 1.6; + vertical-align: middle; + color: var(--dark-blue-color); + border-bottom-color: currentColor; +} + +.php8-compare ~ .php8-compare { + margin-top: 58px; +} + +.php8-compare__main { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + margin-top: 2rem; +} + +@media (max-width: 810px) { + .php8-compare__main { + display: block; + } +} + +.php8-compare__block { + position: relative; + -ms-flex-preferred-size: calc((100% - 68px)/2); + flex-basis: calc((100% - 68px)/2); + text-align: left; +} + +.php8-compare__label { + position: absolute; + top: 12px; + left: 12px; + padding: 6px 16px 4px; + border-radius: 4px; + font-size: 12px; + font-weight: normal; + font-stretch: normal; + font-style: normal; + line-height: 1.33; + letter-spacing: normal; + text-align: center; + color: var(--background-color); + background-color: var(--foreground-color); +} + +.php8-compare__label_new { + background-color: var(--dark-blue-color); + color: #fff; +} + +.php8-compare__content { + display: inline-block; + max-width: 820px; + margin-top: 24px; + text-align: left; +} + +.php8-compare__content--spaced { + margin-bottom: 24px; +} + +.php8-compare__content--block { + display: block; +} + +@media (max-width: 810px) { + .php8-compare__content { + display: block; + } +} + +.php8-h2 code, +.php8-compare__content code { + color: rgba(39, 40, 44, 0.7); + background-color: rgba(39, 40, 44, 0.05); + padding: .2em .4em; + font-size: 85%; + border-radius: 6px; +} + +.php8-code { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + padding: 50px 40px 38px !important; + box-sizing: border-box; + margin: 0 !important; +} + +.align-start { + align-items: start; +} + +@media (max-width: 768px) { + .php8-code { + padding-left: 12px !important; + padding-right: 12px !important; + } + + .feature-tags { + position: relative; + margin-top: 0; + margin-bottom: 1rem; + } +} + +.php8-compare__arrow { + height: 36px; + width: 20px; + margin: auto; + background: url("/images/php8/icon_arrow.svg") scroll no-repeat center center / contain transparent; +} + +@media (max-width: 810px) { + .php8-compare__arrow { + margin-top: 10px; + margin-bottom: 10px; + transform: rotate(90deg); + } +} + +.php8-section li ~ li { + margin-top: 24px; +} + +.php8-columns { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +@media (max-width: 768px) { + .php8-columns { + display: block; + } +} + +.php8-column { + -ms-flex-preferred-size: calc((100% - 68px)/2); + flex-basis: calc((100% - 68px)/2); +} + +@media (max-width: 768px) { + .php8-column { + width: 100%; + } +} + +.php8-h2 .genanchor { + display: none; + float: left; + height: 30px; + width: 30px; + margin-top: 4px; + margin-left: -30px; + background: url("/images/php8/anchor.svg") scroll no-repeat left center / 21px 16px transparent; + text-decoration: none; + border-bottom: none; + font-size: 0; +} + +.php8-h2:hover .genanchor { + display: block; +} + +.php8-chart__table { + margin: 16px 0; +} + +.page-tools { + position: absolute; + top: 28px; + right: 28px; +} + +@media (max-width: 1000px) { + .page-tools { + top: 16px; + right: 16px; + } +} + +@media (max-width: 480px) { + .page-tools { + top: 0; + } +} + +.change-language { + font-size: 15px; + color: #fff; + line-height: 1.6; +} + +.change-language label { + display: inline-block; + margin-left: 16px; + vertical-align: middle; +} + +@media (max-width: 480px) { + .change-language label { + margin-top: 8px; + } +} + +.change-language select { + min-width: 178px; + margin-left: 16px; + vertical-align: middle; +} + +@media (max-width: 480px) { + .change-language select { + margin-top: 8px; + } +} + +@media (max-width: 620px) { + .php8-stats { + flex-direction: column; + max-width: 200px; + margin: 0 auto; + gap: 1rem; + } +} + +.change-language select, +.change-language option { + padding: 4px 5px; + color: rgba(39, 40, 44, 0.7); + line-height: 1.33; +} + +.example-contents-full { + width: 100%; + position: relative; +} + + + + + +.php8-stats { + display: flex; + justify-content: space-between; + margin-bottom: 3rem; + margin-top: 3rem; +} + +.php8-stat-card { + background: #475284; + padding: 1rem; + border-radius: 1rem; + text-align: center; + width: auto; + transition: transform 0.3s, box-shadow 0.3s; +} +.php8-stat-value { + font-size: 1.8rem; + font-weight: 700; + color: white; + margin-bottom: 5px; +} +.php8-stat-label { + font-size: 0.8rem; + color: rgba(255, 255, 255, 0.7); +} +#layout-content .php8-stat-label a { + color: #afafaf; + vertical-align: super; + font-size: .5rem; +} + + +.snippet-after .phpcode { + background: #f7fff4; +} + +.php8-change > .php-8-section-wrapped { + margin-top: 2rem; +} + +.php8-section-tiled .php8-change { + display: inline-block; + max-width: 28rem; + vertical-align: top; + padding: 1rem; + text-align: left; +} + +.php8-section_footnotes ul { + margin: 0; +}