<?php
class X {
public static function test(X $x) {
var_dump($x);
if (version_compare(PHP_VERSION, '8.1') >= 0) {
var_dump(serialize($x));
}
}
}
class Y extends X {
protected $value = 1;
protected function __debugInfo() {
return array('value' => $this->value);
}
protected function __sleep() {
return array('value');
}
protected function __destruct() {}
}
X::test(new X());
X::test(new Y());
Warning: The magic method Y::__debugInfo() must have public visibility in /in/6DFGp on line 15
Warning: The magic method Y::__sleep() must have public visibility in /in/6DFGp on line 19
object(X)#1 (0) {
}
string(12) "O:1:"X":0:{}"
object(Y)#1 (1) {
["value"]=>
int(1)
}
string(31) "O:1:"Y":1:{s:8:" * value";i:1;}"
Fatal error: Uncaught Error: Call to protected Y::__destruct() from global scope in /in/6DFGp:27
Stack trace:
#0 {main}
thrown in /in/6DFGp on line 27
Process exited with code 255.
Output for 8.0.0 - 8.0.30
Warning: The magic method Y::__debugInfo() must have public visibility in /in/6DFGp on line 15
Warning: The magic method Y::__sleep() must have public visibility in /in/6DFGp on line 19
object(X)#1 (0) {
}
object(Y)#1 (1) {
["value"]=>
int(1)
}
Fatal error: Uncaught Error: Call to protected Y::__destruct() from global scope in /in/6DFGp:27
Stack trace:
#0 {main}
thrown in /in/6DFGp on line 27
Process exited with code 255.
Output for 7.3.15 - 7.3.33, 7.4.3 - 7.4.33
Warning: The magic method __debugInfo() must have public visibility and cannot be static in /in/6DFGp on line 15
object(X)#1 (0) {
}
object(Y)#1 (1) {
["value"]=>
int(1)
}
Fatal error: Uncaught Error: Call to protected Y::__destruct() from context '' in /in/6DFGp:27
Stack trace:
#0 {main}
thrown in /in/6DFGp on line 27
Process exited with code 255.
Warning: The magic method __debugInfo() must have public visibility and cannot be static in /in/6DFGp on line 15
object(X)#1 (0) {
}
object(Y)#1 (1) {
["value"]=>
int(1)
}
Output for 5.6.0 - 5.6.40
Warning: The magic method __debugInfo() must have public visibility and cannot be static in /in/6DFGp on line 15
object(X)#1 (0) {
}
object(Y)#1 (1) {
["value"]=>
int(1)
}
Fatal error: Call to protected Y::__destruct() from context '' in /in/6DFGp on line 27
Process exited with code 255.
object(X)#1 (0) {
}
object(Y)#1 (1) {
["value":protected]=>
int(1)
}
Fatal error: Call to protected Y::__destruct() from context '' in /in/6DFGp on line 27
Process exited with code 255.
object(X)#1 (0) {
}
object(Y)#1 (1) {
["value:protected"]=>
int(1)
}
Fatal error: Call to protected Y::__destruct() from context '' in /in/6DFGp on line 27
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/6DFGp on line 4
Process exited with code 255.
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/6DFGp on line 4
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/6DFGp on line 4
Process exited with code 255.