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
2 changes: 2 additions & 0 deletions Zend/tests/enum/__wakeup.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,6 @@ enum Foo {

?>
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Fatal error: Enum Foo cannot include magic method __wakeup in %s on line %d
3 changes: 2 additions & 1 deletion Zend/tests/serialize/bug34045.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@ $db_str = serialize($db);
$db2 = unserialize($db_str);
echo "ok\n";
?>
--EXPECT--
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
ok
4 changes: 4 additions & 0 deletions Zend/zend_compile.c
Original file line number Diff line number Diff line change
Expand Up @@ -9355,6 +9355,10 @@ static void zend_compile_class_decl(znode *result, zend_ast *ast, bool toplevel)
zend_error(E_DEPRECATED, "The __sleep() serialization magic method has been deprecated."
" Implement __serialize() instead (or in addition, if support for old PHP versions is necessary)");
}
if (UNEXPECTED(zend_hash_exists(&ce->function_table, ZSTR_KNOWN(ZEND_STR_WAKEUP)) && ce->__unserialize == NULL)) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Swapping the conditions like above might've been good

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yes... I though I applied the change but apparently I did not, will fix.

zend_error(E_DEPRECATED, "The __wakeup() serialization magic method has been deprecated."
" Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary)");
}

/* We currently don't early-bind classes that implement interfaces or use traits */
if (!ce->num_interfaces && !ce->num_traits && !ce->num_hooked_prop_variance_checks
Expand Down
2 changes: 2 additions & 0 deletions ext/date/tests/bug62852_var2.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ try {
var_dump( $foo );
?>
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Fatal error: Uncaught Error: Invalid serialization data for DateTime object in %sbug62852_var2.php:%d
Stack trace:
#0 [internal function]: DateTime->__unserialize(Array)
Expand Down
2 changes: 2 additions & 0 deletions ext/date/tests/bug62852_var3.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ try {
var_dump( $foo );
?>
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Fatal error: Uncaught Error: Invalid serialization data for DateTime object in %sbug62852_var3.php:%d
Stack trace:
#0 [internal function]: DateTime->__unserialize(Array)
Expand Down
2 changes: 2 additions & 0 deletions ext/dom/tests/gh8996.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ echo "Serialized:\n-----------\n$serialized\n-----------\nRestored:\n-----------
?>
--EXPECTF--
Deprecated: The __sleep() serialization magic method has been deprecated. Implement __serialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
=== __sleep and __wakeup ===
string(144) "O:34:"SerializableDomDocumentSleepWakeup":1:{s:43:"%0SerializableDomDocumentSleepWakeup%0xmlData";s:39:"<?xml version="1.0"?>
<tag>value</tag>
Expand Down
2 changes: 2 additions & 0 deletions ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_class.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,8 @@ $db->exec('DROP TABLE IF EXISTS test_stmt_fetch_class');
--EXPECTF--
Deprecated: The __sleep() serialization magic method has been deprecated. Implement __serialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

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) in %s on line %d
Creating an object, serializing it and writing it to DB...
myclass::singleton(Creating object)
Expand Down
2 changes: 2 additions & 0 deletions ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ $db->exec('DROP TABLE IF EXISTS test_stmt_fetch_serialize');
--EXPECTF--
Deprecated: The __sleep() serialization magic method has been deprecated. Implement __serialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

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) in %s on line %d
Creating an object, serializing it and writing it to DB...
myclass::singleton(Creating object)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,8 @@ $db->exec('DROP TABLE IF EXISTS test_stmt_fetchserialize_fetch_class');
--EXPECTF--
Deprecated: The __sleep() serialization magic method has been deprecated. Implement __serialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

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) in %s on line %d
Creating an object, serializing it and writing it to DB...
myclass::singleton(Creating object)
Expand Down
1 change: 1 addition & 0 deletions ext/phar/tests/phar_metadata_write3.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php');
unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php.copy.php');
?>
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
Reading file contents through stream wrapper
string(18) "contents of file a"
Original metadata
Expand Down
2 changes: 2 additions & 0 deletions ext/phar/tests/phar_metadata_write4.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php');
unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php.copy.php');
?>
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: The __sleep() serialization magic method has been deprecated. Implement __serialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
In __destruct 1
string(1) "a"
Expand Down
1 change: 1 addition & 0 deletions ext/spl/tests/SplObjectStorage/bug70365.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ function ptr2str($ptr)
}
?>
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
array(5) {
[0]=>
int(1)
Expand Down
1 change: 1 addition & 0 deletions ext/spl/tests/bug70366.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ function ptr2str($ptr)
}
?>
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
array(5) {
[0]=>
int(1)
Expand Down
2 changes: 2 additions & 0 deletions ext/standard/tests/serialize/001.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ var_dump($a);
?>
--EXPECTF--
Deprecated: The __sleep() serialization magic method has been deprecated. Implement __serialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
N;
b:1;
b:0;
Expand Down
4 changes: 4 additions & 0 deletions ext/standard/tests/serialize/005.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,12 @@ var_dump(unserialize('O:22:"autoload_not_available":0:{}'));
--EXPECTF--
Deprecated: The __sleep() serialization magic method has been deprecated. Implement __serialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: The __sleep() serialization magic method has been deprecated. Implement __serialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

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) in %s on line %d
===O1===
TestOld::__sleep()
Expand Down
3 changes: 2 additions & 1 deletion ext/standard/tests/serialize/__serialize_004.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ var_dump($s = serialize($obj));
var_dump(unserialize($s));

?>
--EXPECT--
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
string(126) "O:6:"Wakeup":1:{s:4:"data";a:1:{i:0;O:11:"Unserialize":1:{i:0;O:6:"Wakeup":1:{s:4:"data";a:1:{i:0;O:11:"Unserialize":0:{}}}}}}"
__unserialize() called
array(0) {
Expand Down
3 changes: 2 additions & 1 deletion ext/standard/tests/serialize/bug64354_2.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,6 @@ try {
var_dump($e->getMessage());
}
?>
--EXPECT--
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
string(6) "Failed"
2 changes: 2 additions & 0 deletions ext/standard/tests/serialize/bug65806.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ function check(myObjC $obj) {
?>
--EXPECTF--
Deprecated: The __sleep() serialization magic method has been deprecated. Implement __serialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
SCRIPT START
check successful
start serialize/unserialize
Expand Down
3 changes: 2 additions & 1 deletion ext/standard/tests/serialize/bug68976.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ for($i = 0; $i < 5; $i++) {

var_dump($data);
?>
--EXPECT--
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
array(2) {
[0]=>
object(evilClass)#1 (0) {
Expand Down
1 change: 1 addition & 0 deletions ext/standard/tests/serialize/bug69425.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ var_dump($data);

?>
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
int(1)
array(2) {
[0]=>
Expand Down
2 changes: 2 additions & 0 deletions ext/standard/tests/serialize/bug70172_2.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ function ptr2str($ptr)
}
?>
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: obj 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 on line %d
array(2) {
[0]=>
Expand Down
3 changes: 2 additions & 1 deletion ext/standard/tests/serialize/bug70513.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ var_dump($x);
var_dump($obj);

?>
--EXPECT--
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
array(1) {
[0]=>
int(1)
Expand Down
4 changes: 4 additions & 0 deletions ext/standard/tests/serialize/bug72663.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ try {

?>
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Warning: unserialize(): Error at offset 17 of 24 bytes in %s on line %d
bool(false)

Expand Down
1 change: 1 addition & 0 deletions ext/standard/tests/serialize/bug72731.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ var_dump(unserialize($poc));

?>
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d
%s(73588229205)
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
--TEST--
__wakeup() deprecation promoted to exception
--FILE--
<?php

set_error_handler(function ($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr);
});

try {
eval(<<<'CODE'
class Test {
public function __wakeup() {
return;
}
}
CODE);
} catch (Throwable $e) {
echo $e::class, ': ', $e->getMessage(), PHP_EOL;
}

?>
--EXPECT--
ErrorException: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary)
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?php

class Test {
public function __wakeup() {
return;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
--TEST--
__wakeup() deprecation promoted to exception
--FILE--
<?php

set_error_handler(function ($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr);
});

try {
require __DIR__ . '/wakeup_deprecation_promoted_exception2.inc';
} catch (Throwable $e) {
echo $e::class, ': ', $e->getMessage(), PHP_EOL;
}

?>
--EXPECT--
ErrorException: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

normally tests have a trailing newline

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll fix this in the follow-up commit with NEWS/UPGRADING

2 changes: 2 additions & 0 deletions ext/standard/tests/strings/bug72663_3.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,7 @@ unserialize($poc);
?>
DONE
--EXPECTF--
Deprecated: The __wakeup() serialization magic method has been deprecated. Implement __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d

Warning: unserialize(): Error at offset 50 of 50 bytes in %s on line %d
DONE