- array_map: documentation ( source)
- var_dump: documentation ( source)
- array_merge: documentation ( source)
- class_parents: documentation ( source)
<?php
class A
{
public static $data = ['a'];
public static function getData()
{
$classes = [get_called_class()];
$classes += class_parents($classes[0]);
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());