La fonction ci-dessous est de http://php.net/manual/en/function.class-uses.php, le commentaire d'ulf. Fonctionne parfaitement.
function class_uses_deep($class, $autoload = true)
{
$traits = [];
// Get traits of all parent classes
do {
$traits = array_merge(class_uses($class, $autoload), $traits);
} while ($class = get_parent_class($class));
// Get traits of all parent traits
$traitsToSearch = $traits;
while (!empty($traitsToSearch)) {
$newTraits = class_uses(array_pop($traitsToSearch), $autoload);
$traits = array_merge($newTraits, $traits);
$traitsToSearch = array_merge($newTraits, $traitsToSearch);
};
foreach ($traits as $trait => $same) {
$traits = array_merge(class_uses($trait, $autoload), $traits);
}
return array_unique($traits);
}
Il y a quelques fonctions qui restituera les traits utilisés par une classe (et ses parents/etc) dans les commentaires sur cette page: http://php.net/manual/en/function.class-uses .php – iainn
@iainn. Je pense que ulf fera le travail! – bijiDango