Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ PHP NEWS
- DOM:
. Removed LIBXML_XINCLUDE from valid options for XMLDocument,
as it was a no-op. (ndossche)
. Readonly DOM properties are now declared with asymmetric visibility
(public private(set)). ReflectionProperty::isWritable() reports them
correctly, and external writes raise "Cannot modify private(set)
property" instead of the previous readonly modification error.
(David Carlier)

- Fileinfo:
. Fixed bug GH-20679 (finfo_file() doesn't work on remote resources).
Expand Down
10 changes: 10 additions & 0 deletions UPGRADING
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,16 @@ PHP 8.6 UPGRADE NOTES
1. Backward Incompatible Changes
========================================

- DOM:
. Properties previously documented as @readonly (e.g. DOMNode::$nodeType,
DOMDocument::$xmlEncoding, DOMEntity::$actualEncoding, ::$encoding,
::$version) are now declared with asymmetric visibility
(public private(set)). Attempts to write to them from outside the
class now raise "Cannot modify private(set) property <class>::$<prop>
from global scope" instead of the prior readonly modification error.
ReflectionProperty::isWritable() also reports these properties
accurately.

- GD:
. imagesetstyle(), imagefilter() and imagecrop() filter their
array arguments types/values and raise a TypeError/ValueError
Expand Down
14 changes: 13 additions & 1 deletion build/gen_stub.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
const PHP_83_VERSION_ID = 80300;
const PHP_84_VERSION_ID = 80400;
const PHP_85_VERSION_ID = 80500;
const PHP_86_VERSION_ID = 80600;
const ALL_PHP_VERSION_IDS = [
PHP_70_VERSION_ID,
PHP_80_VERSION_ID,
Expand All @@ -34,6 +35,7 @@
PHP_83_VERSION_ID,
PHP_84_VERSION_ID,
PHP_85_VERSION_ID,
PHP_86_VERSION_ID,
];

// file_put_contents() but with a success message printed after saving
Expand Down Expand Up @@ -2921,6 +2923,11 @@ class StringBuilder {
'8.5' => 'ZEND_STR_8_DOT_5',
];

// NEW in 8.6
private const PHP_86_KNOWN = [
"arguments" => "ZEND_STR_ARGUMENTS",
];

/**
* Get an array of three strings:
* - declaration of zend_string, if needed, or empty otherwise
Expand Down Expand Up @@ -2959,6 +2966,10 @@ public static function getString(
}
$include = self::PHP_80_KNOWN;
switch ($minPhp) {
case PHP_86_VERSION_ID:
$include = array_merge($include, self::PHP_86_KNOWN);
// Intentional fall through

case PHP_85_VERSION_ID:
$include = array_merge($include, self::PHP_85_KNOWN);
// Intentional fall through
Expand Down Expand Up @@ -4148,7 +4159,8 @@ public function __construct(array $fileTags) {
throw new Exception(
"Legacy PHP version must be one of: \"" . PHP_70_VERSION_ID . "\" (PHP 7.0), \"" . PHP_80_VERSION_ID . "\" (PHP 8.0), " .
"\"" . PHP_81_VERSION_ID . "\" (PHP 8.1), \"" . PHP_82_VERSION_ID . "\" (PHP 8.2), \"" . PHP_83_VERSION_ID . "\" (PHP 8.3), " .
"\"" . PHP_84_VERSION_ID . "\" (PHP 8.4), \"" . PHP_85_VERSION_ID . "\" (PHP 8.5), \"" . $tag->value . "\" provided"
"\"" . PHP_84_VERSION_ID . "\" (PHP 8.4), \"" . PHP_85_VERSION_ID . "\" (PHP 8.5), \"" . PHP_86_VERSION_ID . "\" (PHP 8.6), " .
$tag->value . "\" provided"
);
}

Expand Down