private static function getInterfaces(\ReflectionClass $class) {
$classes = array();
foreach ($class
->getInterfaces() as $interface) {
$classes = array_merge($classes, self::getInterfaces($interface));
}
if ($class
->isUserDefined() && $class
->isInterface() && !isset(self::$seen[$class
->getName()])) {
self::$seen[$class
->getName()] = true;
$classes[] = $class;
}
return $classes;
}