Имя класса `Fibonacci`, вполне может существовать в какой-нибудь другой либе. Это вызовет конфликт, что не очень приятно.
Давай сделаем следующее:
- положим этот класс в уникальный namespace придерживаясь стандарта PSR-0;
- разделим класс Fibonacci на 2, потому что фильтр, ну никак не вяжется с классом Fibonacci;
- предусмотрим возможность создания новых фильтров и генераторов и запилим для них интерфейсы;

Как именно реализовывать интерфейсы решать тебе, но учти что необходимо что бы была возможность на основе этих интерфейсов создать любой фильтр или генератор.