Codeigniter adalah opensource web framework untuk membangun website dinamis dengan menggunakan PHP. CI disusun dengan menganut konsep MVC (Model, View, Controller), suatu konsep yang cukup populer dalam pembangunan aplikasi web.
CI pertama kalai dirilis oleh ellislab.com pada 28 Februari 2006, dan kini di maintaince oleh British Columbia Institute of Technology .
FRAMEWORK Framework secara sederhana dapat diartikan kumpulan dari fungsi-fungsi/prosedur-prosedur dan class-class untuk tujuan tertentu yang sudah siap digunakan sehingga bisa lebih mempermudah dan mempercepat pekerjaan seorang programer, tanpa harus membuat fungsi atau class dari awal.
Ada beberapa alasan mengapa menggunakan Framework:
  1. Mempercepat dan mempermudah pembangunan sebuah aplikasi web.
  2. Relatif memudahkan dalam proses maintenance karena sudah ada pola tertentu dalam sebuah framework (dengan syarat programmer mengikuti pola standar yang ada)
  3. Umumnya framework menyediakan fasilitas-fasilitas yang umum dipakai sehingga kita tidak perlu membangun dari awal (misalnya validasi, ORM, pagination, multiple database, scaffolding, pengaturan session, error handling, dll

Model View Controller Concept
MODEL VIEW CONTROLLER Model View Controller merupakan suatu konsep yang cukup populer dalam pembangunan aplikasi web, berawal pada bahasa pemrograman Small Talk, MVC memisahkan pengembangan aplikasi berdasarkan komponen utama yang membangun sebuah aplikasi seperti manipulasi data, user interface, dan bagian yang menjadi kontrol aplikasi. Terdapat 3 jenis komponen yang membangun suatu MVC pattern dalam suatu aplikasi yaitu :
  1. View Merupakan bagian yang menangani presentation logic. Pada suatu aplikasi web bagian ini biasanya berupa file template HTML, yang diatur oleh controller. View berfungsi untuk menerima dan merepresentasikan data kepada user. Bagian ini sebaiknya tidak memiliki akses langsung terhadap bagian model.
  2. Model Biasanya berhubungan langsung dengan database untuk memanipulasi data (insert, update, delete, search), menangani validasi dari bagian controller, namun sebaiknya tidak berhubungan langsung dengan bagian view.
  3. Controller Merupakan bagian yang mengatur hubungan antara bagian model dan bagian view, controller berfungsi untuk menerima request dan data dari user kemudian menentukan apa yang akan diproses oleh aplikasi.
FITUR FITUR PADA CODEIGNITER Codeigniter Framework memberikan banyak pilihan modul siap pakai yang bisa dimodifikasi dan di ekstend. Beberapa fitur utama Codeigniter antara lain: Model-View-Controller Based System , Support multi database platform, Database query builder, Form data validaiton, Email Sending Class, Image Manipulation, File Uploading, FTP Module, Localization, Pagination, Data Encryption, Benchmarking , Full Page Caching , Error Logging, Application Profiling, Calendaring, User Agent Class, Zip Encoding Class, Template Engine Class, Trackback Class, XML-RPC Library, Unit Testing Class, Flexible URI Routing dan sekumpulan helpers lainya.

Codeigniter Application Flow
Cara kerja Codeigniter 1. Frontend index.php Seperti yang ditunjukkan pada gambar, setiap kali tejadi request ke aplikasi CodeIgniter, maka untuk pertama kali akan diarahkan ke file index.php.
2. Routing Proses berikutnya, Routing akan memutuskan apakah akan meneruskan permintaan ini ke langkah-3 untuk caching atau melewati permintaan ini ke langkah-4 untuk pemeriksaan keamanan. 3. Caching Jika halaman yang diminta sudah dalam Caching, maka Routing akan melanjutkan ke proses berikutnya. 4. Security Sebelum request di terukan ke bagian controller, fungsi keamanan bekerja, mulai dari validasi input dari user hingga deteksi sql injection. 5. Application Controller Setelah dipastikan lolos dari tahap security checker, request akan diteruskan ke bagian controller. Di dalam controller, akan diload beberapa komponen framework seperti model, librariy, helper, plugin dan file configurasi yang diperlukan 6. Application Views Dari controller, akan dilemparkan ke view. View inilah yang akan menampilkan data ke user melalui komponen html, css dan javascript.

Struktur Aplikasi

Ada 3 folder utama ketika anda pertama kali mendownload framework codeigniter. 1. Application Folder ini adalah folder tempat anda bekerja, semua proses produksi aplikasi di letakan di folder ini. 2. System System adalah folder core sistem pada codeigniter. Sebaiknya tidak melakukan perubahan sama sekali pada bagian ini. 3. user guide Berisi manual guide penggunaan framework codeigniter
Application – Cache : berisi semua halaman cache dari aplikasi. Cache akan meningkatkan kecepatan loading halaman aplikasi. – Config Folder ini berisi berbagai file untuk mengkonfigurasi aplikasi. Beberapa file configurasi yang paling sering digunakan adalah config.php, database.php, routes.php dan autoad.php – Controllers Folder ini berisi file controller yang memegang pengendali dari aplikasi Anda. Controller adalah bagian utama dari aplikasi codeigniter. – Core Folder ini akan berisi kelas dasar dari aplikasi codeigniter. – Helpers Dalam folder ini, Anda dapat menempatkan alat bantu dan fungsi tambahan sederhana. – Hooks File dalam folder ini menyediakan sarana untuk mengektensi dan mengubah cara kerja core aplikasi dengan tanpa menyentuh file aplikasi inti pada folder ‘system’. – Language Folder ini berisi file terkait lokalisasi bahasa dan untuk fitur transalator multi language.
Libraries Folder ini berisi file-file library yang dikembangkan untuk aplikasi Anda. Konsepnya sama seperti helper namun akan menghandle fungsi fungsi yang sifatnya lebih kompleks. – Logs Folder ini berisi file yang terkait dengan log dari aplikasi. – Models File file model yang bertugas untuk berkomunikasi dengan database akan ditempatkan di folder ini. – Third_party Folder ini untuk menempatkan plugin dari pihak ketiga yang akan digunakan untuk aplikasi codeigniter. – Views FIle aplikasi HTML akan ditempatkan di folder ini.

Step by step

1. Enviroment Pada contoh tutorial kali ini menggunakan cloud IDE editor https://www.youtube.com/watch?v=y_x… Panduan : https://docs.c9.io/docs/ Tips : untuk di localhost bisa menggunakan xampp 2. Install Codeigniter Download codeigniter, kemudian extract content yang diperlukan pada root folder https://www.youtube.com/watch?v=gKh… Panduan : http://www.codeigniter.com/user_gui…
3. Download Bootstrap & Jquery https://www.youtube.com/watch?v=jSM… Panduan : http://getbootstrap.com/getting-sta… Tips : untuk tingkat lanjut bisa gunakan gulp automation
4. Menjalankan aplikasi codeigniter https://www.youtube.com/watch?v=bNj… Panduan : https://docs.c9.io/docs/ 5. Setting Base URL https://www.youtube.com/watch?v=WLx… Panduan : http://www.codeigniter.com/user_gui… Tips : base url adalah url aplikasi kita 6. Menghilangkan index.php dari URL https://www.youtube.com/watch?v=CwK… https://www.youtube.com/watch?v=yTx… Panduan: http://www.codeigniter.com/user_gui… Tips : fitur ini bertujuan untuk ‘mempercantik’ url kita 7. Install PHPmyadmin https://www.youtube.com/watch?v=z1A… Panduan : https://community.c9.io/t/setting-u… Tips : Selain mysql, codeigniter juga bisa digunakan untuk database Oracle , PostgreSQL , MS SQL , SQLite , CUBRID , Interbase/Firebird , ODBC
8. Membuat table pada PHPmyadmin https://www.youtube.com/watch?v=9Vk… Panduan : https://community.c9.io/t/setting-u… 9. Mengatur configurasi database di codeigniter https://www.youtube.com/watch?v=2aj… Panduan : http://www.codeigniter.com/user_gui… Tips : Codeigniter bisa menghandle beberapa koneksi ke database sekaligus
10. Membuat Controller Pertama Anda https://www.youtube.com/watch?v=M-L… Panduan : http://www.codeigniter.com/user_gui… Tips : usahakan controller ‘sekurus’ mungkin, fungsi untuk database di letakan pada model, controller hanya bertugas sebagai penghubung antara model dan views. Jika aplikasi kompleks, CI mengizinkan untuk meletekan controller pada subfolder.
11. Membuat View Pertama Anda https://www.youtube.com/watch?v=OfM… Panduan : http://www.codeigniter.com/user_gui… Tips : untuk mengorganisasikan views agar lebih mudah dimaintance, gunakan subfolder 12. Cara meload view via controller https://www.youtube.com/watch?v=q2P… Panduan: http://www.codeigniter.com/user_gui… 13. Memberikan data dari controller ke views https://www.youtube.com/watch?v=wsB… Tips : Data dari database di passing oleh model, data yang bersifat konstant, usahakan gunakan fitur CONSTANT dari codeigniter
14. Meload Bootstrap & Jquery pada views https://www.youtube.com/watch?v=xhj… 15. Membuat Form pada codeigniter https://www.youtube.com/watch?v=5JD… 16. Membuat web component pada codeigniter https://www.youtube.com/watch?v=H-C…
17. Menghandle form submit pada codeigniter https://www.youtube.com/watch?v=-Fl… Tips : aktifkan fitur CSRF pada kodeigniter https://www.codeigniter.com/user_guide/libraries/security.html
18. Mendapatkan value dari form data https://www.youtube.com/watch?v=3gw…
19. Mengenal Form Validation https://www.youtube.com/watch?v=_zd… Panduan : http://www.codeigniter.com/user_gui… Tips: Minimum validasi pada aplikasi codeigniter setidaknya meliputi – Validasi pada sisi user http://parsleyjs.org/ – Validasi pada aplikasi logic ( controller ) – Validasi pada database (model) 20. Menampilkan pesan error pada form validation https://www.youtube.com/watch?v=dnl… 21. Menambahkan beberapa validasi sekaligus https://www.youtube.com/watch?v=Rve… 22. Membuat model pertama https://www.youtube.com/watch?v=j9P… Panduan : http://www.codeigniter.com/user_gui… Tips: Untuk tingkat lanjut, bisa menggunakan ORM http://doctrine-orm.readthedocs.io/… http://datamapper.maglok.nl/ https://github.com/jamierumbelow/co… 23. Insert data ke database via model https://www.youtube.com/watch?v=XBf… Panduan : http://www.codeigniter.com/user_gui… 24. Mengambil dan menampilkan data dari database https://www.youtube.com/watch?v=HxF… 25. Menghapus data dari database https://www.youtube.com/watch?v=2Cy… 26. Codeigniter Pagination https://www.youtube.com/watch?v=ZpV… Panduan : http://www.codeigniter.com/user_gui… 27. Mengatur tampilan pagination https://www.youtube.com/watch?v=fnr… Panduan : http://www.codeigniter.com/user_gui…
28. Mengatur route url pada codeigniter https://www.youtube.com/watch?v=afG… Panduan : http://www.codeigniter.com/user_gui… Tips : Pastikan aktifkan fitur routing untuk membantu level keamanan aplikasi, user tidak bisa melihat backend controller. Aktifkan juga fitur _remap, jika memang diperlukan 29. Mengenal MY Controller pada codeigniter https://www.youtube.com/watch?v=qhK… Panduan : http://www.codeigniter.com/user_gui… Tips: Gunakan fitur my controller untuk memproteksi bagian bagian aplikasi, seperti pada admin dashboard, user dashboard dll. 30. Mengenal Session pada codeigniter https://www.youtube.com/watch?v=khy… Panduan : http://www.codeigniter.com/user_gui… Tips : Di level produksi, gunakan redis sebagai tempat menyimpan session. Khususnya untuk aplikasi dengan high visitor dan load. 31. HMVC pada codeigniter https://www.youtube.com/watch?v=j61… Panduan : https://bitbucket.org/wiredesignz/c… Tips : Dengan HMVC maka konsep modular design bisa digunakan. Modular berarti membuat sebuah mini aplikasi pada aplikasi utama, contoh penggunaan saat membuat module, addon, widget dll Hanya gunakan modul hmvc pada aplikasi yang sangat komplek, untuk aplikasi sederhana tidak disarankan, terlalu overkill feature, 32. Menggunakan Auth Plugin – Ion Auths https://www.youtube.com/watch?v=0c8… Panduan : http://benedmunds.com/ion_auth/ Tips: Gunakan ion auth untuk mempercepat pembuatan fitur auth. Ion auth dikembangkan oleh salah satu contributor tetap di project opensource Codeigniter.