Хоть и редко, но бывает нужно. Пример, который я помню: нужно было запретить разработчикам добавлять в класс (и его наследников) константы без префиксов "SOME_PREFIX_". Мы написали unit тест, которые через рефлексы получает список всех констант класса и проверяет их названия. В результате константы с неправильным именем не проходили этот тест и заставляли разработчика переписать свой код.
В тестах иногда бывает нужно временно сделать приватное свойство публичным, тут опять на помощь приходит ReflectionClass:
$obj = new TestableClass();
$reflection = new ReflectionClass($obj);
$privatProperty = $reflection->getProperty('privateProperty');
$privatProperty->setAccessible(true);
$privatProperty->setValue($obj, 'value');
Штуки вроде
PHP CodeSniffer также
используют рефлексы. Ещё пример —
phpdoc. Как только возникает задача генерации кода из phpdoc-комментариев, то без рефлексов тут никуда (разве что изобретать свой велосипед для парсинга).