mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'PHP-8.4'
* PHP-8.4: Fix failed assertion when promoting Serialize deprecation to exception
This commit is contained in:
commit
20e3692a8c
2 changed files with 22 additions and 0 deletions
18
Zend/tests/gh15907.phpt
Normal file
18
Zend/tests/gh15907.phpt
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
--TEST--
|
||||||
|
GH-15907: Failed assertion when promoting inheritance error to exception
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
set_error_handler(function($errno, $msg) {
|
||||||
|
throw new Exception($msg);
|
||||||
|
});
|
||||||
|
|
||||||
|
class C implements Serializable {
|
||||||
|
public function serialize() {}
|
||||||
|
public function unserialize($serialized) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
Fatal error: During inheritance of C, while implementing Serializable: Uncaught Exception: C implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s:%d
|
||||||
|
%a
|
|
@ -478,6 +478,10 @@ static int zend_implement_serializable(zend_class_entry *interface, zend_class_e
|
||||||
if (!(class_type->ce_flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)
|
if (!(class_type->ce_flags & ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)
|
||||||
&& (!class_type->__serialize || !class_type->__unserialize)) {
|
&& (!class_type->__serialize || !class_type->__unserialize)) {
|
||||||
zend_error(E_DEPRECATED, "%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary)", ZSTR_VAL(class_type->name));
|
zend_error(E_DEPRECATED, "%s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary)", ZSTR_VAL(class_type->name));
|
||||||
|
if (EG(exception)) {
|
||||||
|
zend_exception_uncaught_error(
|
||||||
|
"During inheritance of %s, while implementing Serializable", ZSTR_VAL(class_type->name));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue