Java'nın OO'sunu PHP ile karıştırmayın. Java tek bir paradigma dilidir, yani sadece OO yapar. PHP ise çoklu paradigma dilidir, işlevsel programlama veya OO veya her ikisini birden yapabilirsiniz.
Şimdi OO'nun "kötü" uygulaması diye bir şey yok. Java'nın OO'su, diğer tüm dillerin izlemesi veya izlemesi gereken kesin bir uygulama değildir. Bazı kesin kavramlar vardır ve her iki dil de bunları kendi yollarıyla tam olarak uygular (başlangıçtan beri Java, sürüm 5'ten beri PHP).
Sorunuzu cevaplamak için: CI'nin yaptığı ve onunla ne yaptığınız doğru PHP dünyasında. PHP dizileri en esnek ve kullanışlı yapılarından biridir ve verileriniz sadece bilgi olduğunda nesneler üzerinde diziler kullanmak iyi bir şeydir (onlarla mantık taşımayın). Tamamen OO kodu "sadece OO kodu" ile aynı şey değildir.
PHP ile başlıyorsanız, Java'yı iyi OO uygulamaları için referans olarak kullanın, ancak "Java farklı şekilde yapar" olayı nedeniyle PHP anlayışınızı sınırlamayın. Her ikisini de gerçekten sıkıştırabilirsiniz, kavramları alamazsanız paradigma sizi kurtaramaz.
Her durumda Java'yı beğeninize göre daha fazla bulursanız (kişisel bir tercih olarak) web geliştirme için Ruby'ye bakın, biraz daha yakından ilişkilidir.