да. Ты в своём приложении создаёшь интерфейс. У меня такой получился
use Yiisoft\Data\Reader\CountableDataInterface;
use Yiisoft\Data\Reader\DataReaderInterface as YiiDataReaderInterface;
use Yiisoft\Data\Reader\OffsetableDataInterface;
use Yiisoft\Data\Reader\SortableDataInterface;
interface DataReaderInterface extends
YiiDataReaderInterface,
OffsetableDataInterface,
CountableDataInterface,
SortableDataInterface,
IteratorAggregate
и делаешь реализации: на yii2 AR, на cycle (наследуешься от того, что по ссылке, прибавляя этот интерфейс), подтягиваешь сюда же IterableDataReader шы yiisoft/data
И вот у тебя набор коллекций под одним интерфейсом но с разной логикой: первая берёт данные через AR, вторая через cycle, третья для готовых наборов данных.
И в коде везде пользуешься только интерфесом. Т.о. ARDataReader со временем будет вымещен двумя другими и всё, AR можно удалять