Namespace'leri kullanın hocam. Sınıflarınızı doğrudan global namespace altında tanımlamak pek iyi değil. Namespace'leri kullanırsanız, daha iyi bir autoloader'da kullanabilirsiniz(composer'ın ki olabilir mesala).
Her dosyanın üstünde doğrudan erişim yapılıp yapılmadığı kontrol ediliyor, bununla uğraşmak yerine: front controller'ınızı public/ dizinine taşıyıp, web server'lara root dizin olarak public/ dizininin gösterilmesini söyleyebilirsiniz.
Uygulamanın belirli aşamalarında event'ler yayabilirsiniz, tabi bu event'leri dinleyebilecek mekanizmayıda oluşturmanız gerekir. Kod standartlarına uymanızı tavsiye ederim. Controller'da $this->load->view tarzında view dosyalarının yüklendiğini gördüm, Controller'dan doğrudan output yazdırtmak yerine Controller'dan dönen veriyi bastırmanız daha mantıklı olucaktır. Örneğin; return $this->load->view şeklinde bir kullanım daha iyi olur.
İyi çalışmalar dilerim
http://www.php-fig.org/psr/psr-4/ http://www.php-fig.org/psr/psr-2/