Verwechseln Sie Javas OO nicht mit PHPs. Java ist eine einzige Paradigmensprache, was bedeutet, dass es nur OO macht. PHP hingegen ist eine Multi-Paradigmen-Sprache. Sie können entweder funktionale Programmierung oder OO oder beides durchführen.
Jetzt gibt es keine "schlechte" Implementierung von OO. Javas OO ist keine endgültige Implementierung, der jede andere Sprache folgen sollte oder muss. Es gibt einige definitive Konzepte, und beide Sprachen implementieren sie vollständig auf ihre eigene Weise (Java von Anfang an, PHP seit Version 5).
Um Ihre Frage zu beantworten: Was CI macht und was Sie damit machen, ist in der PHP-Welt richtig. Die Arrays von PHP sind eine der flexibelsten und nützlichsten Strukturen, und es ist eigentlich eine gute Sache, Arrays über Objekten zu verwenden, wenn Ihre Daten nur Informationen sind (keine Logik mit sich führen). Vollständiger OO-Code ist nicht dasselbe wie "nur OO-Code".
Wenn Sie mit PHP beginnen, verwenden Sie Java als Referenz für gute OO-Praktiken, aber beschränken Sie Ihr Verständnis von PHP nicht, da "Java es anders macht". Sie können wirklich beides vermasseln, das Paradigma wird Sie nicht retten, wenn Sie die Konzepte nicht verstehen.
Wenn Sie Java auf jeden Fall mehr nach Ihren Wünschen finden (als persönliche Präferenz), schauen Sie sich Ruby für die Webentwicklung an, sie sind etwas enger miteinander verwandt.