<?php
class A
{
public static $data = ['a'];
public static function getData()
{
$classes = class_parents($class);
$classes[] = get_called_class();
return call_user_func_array('array_merge',
array_map(
function($class) {
return $class::$data;
},
$classes
)
);
}
}
class B extends A
{
public static $data = ['b'];
}
class C extends B
{
public static $data = ['c'];
}
class D extends C
{
public static $data = ['d'];
}
var_dump(A::getData());
var_dump(B::getData());
var_dump(C::getData());
var_dump(D::getData());
Warning: Undefined variable $class in /in/9gfps on line 9
Fatal error: Uncaught TypeError: class_parents(): Argument #1 ($object_or_class) must be of type object|string, null given in /in/9gfps:9
Stack trace:
#0 /in/9gfps(9): class_parents(NULL)
#1 /in/9gfps(37): A::getData()
#2 {main}
thrown in /in/9gfps on line 9
Process exited with code 255.
Notice: Undefined variable: class in /in/9gfps on line 9
Warning: class_parents(): object or string expected in /in/9gfps on line 9
array(1) {
[0]=>
string(1) "a"
}
Notice: Undefined variable: class in /in/9gfps on line 9
Warning: class_parents(): object or string expected in /in/9gfps on line 9
array(1) {
[0]=>
string(1) "b"
}
Notice: Undefined variable: class in /in/9gfps on line 9
Warning: class_parents(): object or string expected in /in/9gfps on line 9
array(1) {
[0]=>
string(1) "c"
}
Notice: Undefined variable: class in /in/9gfps on line 9
Warning: class_parents(): object or string expected in /in/9gfps on line 9
array(1) {
[0]=>
string(1) "d"
}
Output for 7.3.32 - 7.3.33
Warning: class_parents(): object or string expected in /in/9gfps on line 9
array(1) {
[0]=>
string(1) "a"
}
Warning: class_parents(): object or string expected in /in/9gfps on line 9
array(1) {
[0]=>
string(1) "b"
}
Warning: class_parents(): object or string expected in /in/9gfps on line 9
array(1) {
[0]=>
string(1) "c"
}
Warning: class_parents(): object or string expected in /in/9gfps on line 9
array(1) {
[0]=>
string(1) "d"
}
Parse error: syntax error, unexpected '[' in /in/9gfps on line 5
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected '[' in /in/9gfps on line 5
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/9gfps on line 5
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/9gfps on line 5
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/9gfps on line 5
Process exited with code 255.