- var_dump: documentation ( source)
- array_merge: documentation ( source)
- class_uses: documentation ( source)
- class_parents: documentation ( source)
<?php
trait Blah {
function getOne() { return 1;}
}
abstract class AbstractTest {
use Blah;
}
class Test extends AbstractTest {}
function hier($class) {
$traits = class_uses($class) ?: [];
$parents = class_parents($class) ?: [];
foreach ($parents as $parent) {
$traits = array_merge($traits, hier($parent));
}
return $traits;
}
$t = new Test;
echo $t->getOne() . "\n";
var_dump(class_parents(Test::class));
var_dump(hier(Test::class));