From 166dc3ac8e0861c32e906a45ef53e9625dd05605 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Fri, 30 Jul 2021 14:47:57 +0000 Subject: [PATCH] Code Modernization: Fix "`JsonSerializable_Object::jsonSerialize()` should be compatible with `JsonSerializable::jsonSerialize(): mixed`" error on PHP 8.1. This relates to the [https://wiki.php.net/rfc/internal_method_return_types Return types for internal methods RFC] in PHP 8.1 and in particular, the change made in [https://github.com/php/php-src/pull/7051 PHP PR #7051], which adds a `mixed` return type to the `JsonSerializable::jsonSerialize()` interface method. WordPress only contains one (test) class which implements the `JsonSerializable` interface and this commit fixes the issue for that class. As of PHP 8.1, the `jsonSerialize()` method in classes which implement the `JsonSerializable` interface are expected to have a return type declared. The return type should be `mixed` or a more specific type. This complies with the Liskov principle of covariance, which allows the return type of a child overloaded method to be more specific than that of the parent. The problem with this is that: 1. The `mixed` return type was only introduced in PHP 8.0. 2. Return types in general were only introduced in PHP 7.0. WordPress still has a minimum PHP version of 5.6, so adding the return type is not feasible for the time being. The solution chosen for now is to add an attribute to silence the deprecation warning. While attributes are a PHP 8.0+ feature, due to the choice of the `#[]` syntax, in PHP < 8.0, attributes will just be ignored and treated as comments, so there is no drawback to using the attribute. Props jrf. See #53635. Built from https://develop.svn.wordpress.org/trunk@51517 git-svn-id: http://core.svn.wordpress.org/trunk@51128 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/version.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wp-includes/version.php b/wp-includes/version.php index 5ea005e062..2cfb4ec7ff 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.9-alpha-51514'; +$wp_version = '5.9-alpha-51517'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.