Вы можете использовать get_declared_classes()
( ссылка на документы ).
Затем выполнить итерацию результата и посмотреть, какой из возвращенных классов является потомком вашего template
класса.
Например:
// с учетом этих классов
class father {}
class child1 extends father {}
class child2 extends father {}
class child3 extends father {}
class notMe {}
// у вас может быть такая функция полезности
function getChildrenOf(string $parentClass): array {
if (!class_exists($parentClass)) {
return [];
}
$classes = array_filter(get_declared_classes(), function($class) use($parentClass) {
return is_a($class, $parentClass, true);
});
return $classes;
}
// которую вы можетеиспользуйте вот так
$childrenClasses = getChildrenOf(father::class);
var_dump($childrenClasses);
Вы можете видеть, как все это работает вместе здесь .