Не путайте OO Java с PHP. Java является единым языком парадигмы, что означает, что он выполняет только ОО. С другой стороны, PHP - это мультипарадигмальный язык, вы можете либо заниматься функциональным программированием, либо ОО, либо и тем, и другим.
Сейчас нет такой вещи, как «плохая» реализация ОО. ОО Java не является окончательной реализацией, которой должен или должен следовать каждый другой язык. Существуют определенные понятия, и оба языка полностью реализуют их по-своему (Java с самого начала, PHP с 5-й версии).
Итак, чтобы ответить на ваш вопрос: что CI делает и что вы делаете с ним, это правильно в мире PHP. Массивы PHP являются одной из самых гибких и полезных структур, и на самом деле полезно использовать массивы над объектами, когда ваши данные являются просто информацией (не несите с собой логику). Полностью OO-код - это не то же самое, что «только OO-код».
Если вы начинаете с PHP, используйте Java как справочник для хороших ООП, но не ограничивайте свое понимание PHP из-за того, что «Java делает это иначе». Вы можете по-настоящему облажаться, и парадигма не спасет вас, если вы не поймете концепции.
Если в любом случае вам больше нравится Java (в качестве личного предпочтения), загляните в Ruby для веб-разработки, они немного более тесно связаны.