CODEIGNITER (CI)

oke, udah lama nih ga posting.  kasian banget ini blog udah usang. Habisnya saya masih sibuk dengan tugas-tugas sekolah yang numpuk. Tapi sekarang saya mau posting nih. tentang materi programman. kalo di pikir-pikir sih, saya kan sekolah jurusan rekayasa perangkat lunak. ya kurang lebih berhubungan dengan yang namanya program. tapi di blog ini belum satu pun materi tentang pemrograman yang saya posting. Well, kali ini saya akan posting tentang Framework CodeIgniter. Ada yang tau? Nah, bagi yang belum tau, mari belajar bersama..... (sebelumnya, silahkan klik join this site nya sbg bentuk apresiasi biar saya semangat buat posting terus)


CODEIGNITER



CodeIgniter adalah sebuah Application Development Framework - toolkit - bagi orang-orang yang membangun situs web menggunakan PHP. Tujuannya adalah untuk memungkinkan Anda untuk mengembangkan proyek-proyek lebih cepat dari yang Anda bisa jika Anda sedang menulis kode dari awal, dengan menyediakan satu set kaya perpustakaan untuk tugas yang biasa diperlukan, serta antarmuka yang sederhana dan struktur logis untuk mengakses perpustakaan ini. CodeIgniter kreatif memungkinkan Anda fokus pada proyek Anda dengan meminimalkan jumlah kode yang dibutuhkan untuk tugas yang diberikan.

Inti dari CI yaitu MVC dan Framework apa sih? MVC dan frame work itu saya curhat lagi.

MVC : terdiri dari tiga bagian yaitu M (models) V (views) C (controller).




Controller : adalah controller berupa class yang diturunkan dari class controller. Penggunaan penurunan class ini, dimaksudkan agar semua class yang dibuat mempunyai kemampuan-kemampuan  (method  dan  behavior)  yang  diperlukan tanpa harus menulis ulang kode tersebut. Sedangkan urutan menjalankan berkas controller sebagaimana dibawah ini.

1.Melakukan pengecekan apakah class, dan method yang dipanggil melalui URL telah  dibuat pemrogram. Jika class dan method tersebut tidak ada, maka akan menampilkan  halaman 404 yaitu halaman yang ditampilkan jika halaman yang diminta tidak ditemukan. Jika ditemukan, maka proses akan berlanjut ke tahap berikutnya.

2.Karena berupa class yang diturunkan, maka hal yang pertama dilakukan pada  constructor (method yang pertama dipanggil ketika object dibuat) adalah menginisialisasi class induknya, untuk memastikan semua method dan behavior yang dimiliki induk berhasil dimuat oleh controller tersebut.

3.Selanjutnya adalah menginisialisasi variabel dan konstanta yang akan digunakan pada class tersebut. Variabel dan konstanta yang bisa dimuat, bukan hanya berupa tipe data primitif seperti string, integer, dan floating point, namun juga bisa berupa objek hasil inisialisasi class pustaka, helper, dan model.

4.Setelah semua persiapan inisialisasi selesai, yang dilakukan selanjutnya adalah   menjalankan  method yang diminta.Pada tahap ini juga dimungkinkan adanya pemuatan variabel dan konstanta yang bersifat lokal (variabel lokal) selain dari variabel dan konstanta yang telah diinisialisasi sebelumnya (variabel global).

5.Pada tahap 3 dan 4 terdapat proses pemuatan helper, pustaka, model, dan skrip.  Keempat  elemen tersebut mempunyai cara yang berbeda dalam pemuatannya.

6.Proses selanjutnya adalah memuat halaman presentasi yang berada pada direktori  view.  Proses ini meliputi menyiapkan variabel dan hasil dari proses sebelumnya, memuat halaman presentasi yang berupa desain template kosong, dan memasukkan hasil kedalam template sehingga membentuk halaman yang siap ditampilkan pada layar pengguna.

7.Setelah terbentuk halaman yang siap ditampilkan, maka proses akhir yang juga  merupakan  tahap akhir dari rangkaian proses framework adalah mengirimkan halaman tersebut pada sisi klien untuk ditampilkan oleh perambah.


Models  : adalah Proses yang ada pada Model mempunyai alur yang hampir sama dengan Controller, hanya saja pada controller hasilnya bisa langsung ditampilkan pada halaman views dan siap ditampilkan pada perambah klien. Sedangkan pada Model, hasilnya dikirimkan pada Controller termasuk
pesan kesalahan yang dikembalikan oleh method pada class tersebut. Lebih jelasnya proses tersebut sebagaimana di bawah ini.
1.Seperti pada controller, model juga melakukan pengecekan terhadap eksistensi class dan  method yang dipanggil oleh controller sebelum manjalankan tugas selanjutnya.Jika tidak ditemukan, maka model akan memberikan pesan kesalahan yang diteruskan pada controler untuk ditangani.
2. Jika ditemukan, maka seperti layaknya class yang lain, model melakukan inisialisasi class induk yaitu class model yang ada pada direktori "library", untuk memastikan fungsionalitas yang ada dapat dijalankan dengan baik.
3. Setelah melakukan inisialisasi class induk, selanjutnya juga melakukan variabel dan  konstanta yang digunakan pada class tersebut. Pada model variabel yang dapat  digunakan hanya tipe data primitif dan juga class pustaka yang ada pada model.  Helper dan class model yang lain tidak dapat dipanggil melalui class model.
4. Model adalah class utama yang digunakan untuk berkomunikasi dengan basis data, komunikasi yang dilakukan meliputi Create, Read, Update, Delete (CRUD). Untuk berkomunikasi dengan basis data, ada dua cara yang digunakan  model, yaitu cara konvensional menggunakan bahasa query (SQL) atau menggunakan ActiveRecord. Untuk penggunaan yang lebih simple dan juga penulisan  kode yang lebih aman disarankan menggunakan ActiveRecord, karena kode SQL yang dituliskan menggunakan ActiveRecord dirancang untuk menghindari kesalahan.
5. Setelah menjalankan perintah query, hasilnya disimpan pada variabel dan dikirimkan ke controller.

Views : adalah berkas model juga ditulis oleh programmer dengan meng-extend dari class model yang telah disediakan.
Berkas view berisi kode HTML dan bahasa lain untuk membentuk tampilan presentasi yang akan disajikan pada pengguna akhir (end user). Semua berkas tersebut berada pada direktori ini dan akan dimuat oleh controller.

Framework : adalah Berdasarkan hasil perancangan yang telah dibahas sebelumnya, implementasi  Framework ke dalam bahas pemrograman PHP adalah sebagaimana dijelaskan di bawah ini. Ada dua jenis implementasi pemrograman yang digunakan, yaitu pemrograman yang dibuat sendiri dengan menuliskan kode pemrograman baru seperti pada penulisan core engine-nya, dan yang kedua adalah adaptasi pustaka pemrograman yang sudah ada seperti adaptasi pustaka database abstraction dan juga penggunaan jQuery.ui.

Struktur Direktori Framework
Struktur direktori merupakan hal yang penting dalam suatu framework, ini berhubungan  dengan pola perancangan yang akan digunakan dan juga routing alamat URL yang akan dipakai. Selain itu susunan direktori juga menentukan seberapa mudah programmer  menemukan berkas yang diperlukan, dan apakah berkas tersebut berada pada alamat yang konsisten.
Pada  Framework ini, secara garis besar, struktur folder dipecah menjadi dua bagian yaitu folder system engine dan folder aplikasi. Folder system engine merupakan inti dari  Framework, semua pustaka dan perintah yang mengatur jalannya sistem berada  pada  folder ini. Diperlukan hanya satu direktori system engine untuk banyak proyek aplikasi, karena direktori ini hanya menyimpan pustaka inti saja, sedangkan konfigurasi dan berkas pekerjaan semua ada pada direktori aplikasi. Sedangkan folder aplikasi adalah folder tempat kita bekerja menuliskan kode pemrograman yang sudah diatur pada system engine, direktori  aplikasi ini bisa digandakan sebanyak mungkin sesuai dengan jumlah proyek  yang  dikerjakan  dengan  menggunakan  formework  ini.  Lebih  jelasnya struktur global kedua folder tersebu.

Struktur dan Fungsi Direktori pada System
 

 Assets : adalah Menyimpan beberapa pustaka bahasa pemrograman lain (non PHP). Pustaka Blueprint CSS dan jQuery serta jQuery.ui yang merupakan pustaka CSS dan Java cript secara default, berada pada direktori ini. Pengguna yang terbiasa menggunakan pustakan lain seperti YAML (YetAnother Multiple Layout) untuk CSS atau MooTools untuk Javascript,dapat memasukkannya ke dalam satu folder pada direktori tersebut

Models : adalah Pustaka database abstraction, database driver, dan juga pustaka active record ada pada direktori ini. Secara default pustaka yang digunakan adalah pustaka database dari CodeIgniter, bila diperlukaan juga bisa diganti dengan Object Relational Mapping (ORM) yang lain seperti
Doctrine atu Propel.

Engine : adalah Direktori tersebut merupakan inti dari Framework, pada folder ini terdapat berkas yang juga dimuat secara langsung oleh berkas bootstrap  index.php. Berkas pada direktori ini tidak boleh dirubah dengan alasan apapun, karena akan merusak jalannya sistem.

Helpers : adalah Helper adalah pustaka kecil yang digunakan untuk membantu tugas-tugas tertentu seperti penulisan kode HTML dengan lebih cepat [20], misalkan FormHelper digunakan untuk membantu penulisan kode form yang
terintegrasi dengan validasi dengan lebih cepat.

Language : adalah Direktori tersebut merupakan direktori untuk menyimpan berkas yang berhubungan dengan dukungan bahasa. Tiap bahasa disimpan dalam satu direktori dan dapat
dikonfigurasi melalui berkas konfigurasi proyek.

Libraries : adalah Sesuai dengan namanya dalam direktori ini tersimpan pustaka pemrograman PHP dengan fungsionalitas tertentu. Base Class untuk Model dan Controller yang nantinya akan
di-extend pada direktori aplikasi juga ada di direktori ini

Direktori inti yang kedua adalah direktori aplikasi. Sebagaimana terlihat pada  direktori aplikasi terdapat satu berkas yang bernama index.php. Berkas  tersebut  merupakan  bootstrap  atau  berkas  awal  dan  satu- satunya yang akan diakses secara langsung oleh pengunjung website. Berkas ini harus berada pada webroot pada tiap aplikasi dan akan memuat semua konfigurasi yang akan digunakan pada aplikasi.
Pada direktori  aplikasi  juga  terdapat  satu  direktori lagi yang bernama "ruang kerja", direktori ini berisi direktori dan berkas konfigurasi dan juga pekerjaan yang digunakan untuk proyek tertentu. Untuk mengembangkan perangkat lunak menggunakan  InTheKost Framework, programmer hanya perlu
berurusan dengan direktori ini, kecuali untuk kasus tertentu seperti untuk mengganti pustaka database abstraction dengan ORM yang diinginkan. Secara rinci, fungsi masing-masing direktori pada "ruang_kerja"

Cache :adalah Pustaka database abstraction dari CI menyediakan fasilitas
caching result, yaitu menyimpan hasil query kedalam suatu berkas, sehingga nanti bila diperlukan memuat query yang sama tinggal memuat cache yang ada untuk meningkatkan performa. Fungsi dari direktori cache ini untuk menyimpan
berkas cache tersebut.

Config : adalah Kegunaan dari direktori config adalah menyimpan semua konfigurasi yang berhubungan dengan proyek tertentu
yang sedang dikerjakan, seperti konfigurasi basis data yang digunakan, letak dari system engine, bahasa yang
digunakan, dan lain sebagainya.

Controllers : adalah Controller adalah penghubung antara antarmuka pengguna dengan logika bisnis. Pada controller dijalankan validasi inputan dan juga mengubah data model ke dalam tampilan presentasi. Berkas controller inilah yang dikerjakan oleh programmer dengan meng-extend dari class controller
yang ada dan disimpan pada direktori ini.

Eror : adalah Direktori ini berfungsi untuk menyimpan jejak kesalahan yang terjadi saat perangkat lunak dijalankan. Jejak kesalahan ini bermanfaat untuk menganalisis kesalahan inputan pengguna dan juga kemungkinan pengguna
mencari titik lemah yang menimbulkan kesalahan.

helpers : adalah Seperti pada direktori helper yang ada pada system engine, direktori ini juga digunakan untuk menyimpan helper. Direktori ini memungkinkan programmer memasukkan helper khusus pada suatu perangkat lunak

Libraries : adalah Sama dengan fungsi dari direktori helper, direktori ini berfungsi untuk menyimpan pustaka tambahan yang diperlukan pada perangkat lunak tertentu.

Models : adalah  Model merupakan logika dari perangkat lunak, mengambil data dari penyedia basis data, atau juga mengubah basis data, dan mengirimkan hasilnya pada controller. Semua berkas model juga ditulis oleh programmer dengan meng-extend dari class model yang telah disediakan

Views : adalah Berkas view berisi kode HTML dan bahasa lain untuk membentuk tampilan presentasi yang akan disajikan pada pengguna akhir (end user). Semua berkas tersebut berada pada direktori ini dan akan dimuat oleh controller.

Pustaka Database Abstraction

Database Abstraction adalah pustaka yang digunakan untuk membungkus pustaka  asli  dari  bahasa  pemrograman  (PHP)  untuk  tujuan  tertentu.  Tujuan tertentu antara lain  meringkas penulisan, memastikan keamanan bahasa query, portabilitas kode untuk digunakan  banyak DBMS, dan alasan lainnya. Pustaka database   abstraction   yang   digunakan   pada   InTheKost   Framework   adalah database  abstraction  dari  CodeIgniter.  Penggunaan  pustaka  tersebut  dengan pertimbangan kelebihan yang dimiliki yaitu [22]:
1.  Mampu  mendukung  banyak  jenis  database  yang  digunakan  di  pasaran yaitu MySQ, MsSQL, ODBC, Postgree, SQLite, dan Oracle.
2.  Mendukung penggunaan transaction untuk query yang lebih aman.
3.  Mempunyai Active Record untuk penulisan SQL secara otomatis namun juga tetap mendukung penulisan SQL secara manual.
4.  Menggunakan  caching  untuk  menyimpan  hasil  query,  sehingga  dapat dipanggil lebih cepat bila ada permintaan yang sama.
5.  Database  Forge  untuk  memanipulasi  struktur  tabel  dan  juga  database, seperti menggunakan Data Defnition Language (DDL) dalam SQL.
6.  Performa  yang  lebih  tinggi  dibandingkan  dengan  Object  Relational

Mapping (ORM) seperti Propel, Doctrine, bahkan juga AdoDB.

Untuk pustaka database abstraction, karena mempunyai banyak berkas yang  harus   dimuat  untuk  menjalankan  fungsinya,  maka  ditempatkan  pada direktori khusus yaitu pada  direktori "database" pada direktori "system", tidak seperti pustaka lain yang ditempatkan pada direktori "libraries".
Karena perbedaan direktori tersebut juga memerlukan method khusus pada pustaka loader (loader.php), namun untuk memudahkan penggunaan, pemrogram menggunakan cara yang sama dengan pemanggilan pustaka yang lain.

Pustaka JavaScript dan CSS
Keduanya merupakan skrip yang berjalan pada sisi klien. Pustaka CSS digunakan   untuk  mempermudah  mengatur  tampilan  halaman  website  pada browser dan juga pada  perangkat lain (proyektor, printer, dan lain sebagainya) dengan menggunakan teknik  GridLayout. Adapun Pustaka JavaScript diberikan untuk mempermudah penulisan skrip pemrograman sisi klien dengan manipulasi DOM HTML untuk perancangan antarmuka Rich Internet Application (RIA).
Pustaka CSS yang digunakan adalah BluePrintCSS yang menekankan pada pengaturan  tata  letak  berbasis  GridLayout  dengan  menggunakan  nama  class. BluePrintCSS mempunyai tiga berkas inti yang dimuat untuk dapat menjalankan fungsinya yaitu "screen.css", "ie.css", dan "print.css". Sedangkan bila diperlukan dapat juga  ditambahkan beberapa  berkas lain untuk  memberikan  variasi pada tampilan, antara lain fancy-type, buttons, dan liquid.
Sedangkan pustaka JavaScript yang digunakan adalah jQuery untuk inti JavaScript-nya dan juga jQuery.ui untuk penggunaan widget berbasis klien dan juga efek seperti dialog, calendar, tabs layout, drag & drop, pulsate, highlight, dan lain sebagainya.  Sedangkan khusus untuk menampilkan text editor berbasis JavaScript menggunakan pustaka TinyMCE.
"jquery.js" yang merupakan berkas inti dari jQuery dan merupakan satu- satunya  berkar yang menyediakan fungsi-fungsi javascript untuk code binding,
DOM  manipulation,  event  handling,  CSS  wrapping,  basic  effect,  dan  Ajax management. Sedangkan jQuery.ui mempunyai banyak berkas yang digunakan untuk fungsi tertentu, misalkan untuk menampilkan datepicker maka yang perlu dipanggil hanya berkas  "ui.datepicker.js", sedangkan untuk menampilkan kotak dialog yang dapat diatur ulang besar kecilnya serta dapat dipindahkan posisinya perlu memanggil berkas "ui.dialog.js", "ui.draggable.js", dan "ui.resizable.js".


3 komentar:

  1. aduh materinya bagus, lumayan bikin otak bekerja

    ReplyDelete
  2. Website paling ternama dan paling terpercaya di Asia
    Sistem pelayanan 24 Jam Non-Stop bersama dengan CS Berpengalaman respon tercepat
    Memiliki 9 Jenis game yang sangat digemari oleh seluruh peminat poker / domino
    Link Alternatif :
    arena-domino.club
    arena-domino.vip
    100% Memuaskan ^-^

    ReplyDelete

Popular Posts