Генерация строго-типизированных коллекций в PHP
Отсутствие коллекций — боль в заднице PHP. На данный момент нет удобного способа обеспечить безопасность типов для наборов объектов. Добавление на уровне языка поддержки дженериков или типизированных массивов - было бы наилучшим решением. Но, реализовать их сложно. Надеюсь, что когда-нибудь это случится, но, вероятно, этого придется ждать несколько лет.
Гитхаб пестрит самодельными решениями, призванными устранить этот недостаток. В этих классах предлагается расширить один-два метода отвечающие за проверку типа добавляемого значения. Но все это выглядит довольно кустарно. Главный минус: такие коллекции создают лишнюю связанность наследованием (один из сильнейших видов связанности), которая проникает в каждую щель вашего приложения, ставя вас в зависимость от пакета стороннего вендора
На днях появилась мысль, как решить эту задачу с помощью генерации кода: Предположим у нас есть папка с объектами в которой находится объект name\space\SomeObject. Полного имени класса этого объекта нам достаточно, чтобы создать для нее класс коллекции name\space\collections\SomeObjectCollection. Такая коллекция может гораздо в большей степени строго-типизированной. Отдельным плюсом сталоо бы отсутствие зависимости от сторонних пакетов: т.к. код получен генерацией, а не расширением шаблона. Единственная связь, которую потребует класс коллекции – связь с классом, экземпляры которого коллекция будет содержать.
Не найдя в интернете подходящего решения под свою задумку, решил написать его сам...