02 September, 2010

APLIKASI BERBASIS WEB MENGGUNAKAN FRAMEWORK CODEIGNITER

Haduh.. :(  tinggal dua hari lagi nih menuju sidang, semoga aja di sidang saya memberikan kesan yang berguna pada program saya, agar wawasan saya di dunia web semakin bertambag dan terus bertambah.

berawal dari modal nekatzzz untuk menghasilkan sebuah program maksimal, sampai sakit, tidak tidur, jarang makan, dll demi skripsi ini. Hal hasil badan makin kurus udah kurus tambah kurus,  wkakaka... Ditambah lagi bulan puasa (bukan alesan) mangkinan aja, sampe2 badan turun 2kilo waduhhhh... tapi tetap semangat dan terus optimis demi bisa membahagiakan ORANG TUA, waduh jadi curhat nih :) inti nya bukan itu sih saya cuma ingin memperkenalkan program yang saya buat, saya membuat SKRIPSI website dan  saya beri dengan judul APLIKASI BERBASIS WEB MENGGUNAKAN FRAMEWORK CODEIGNITER

web ini saya buat mengunakan (CI) CODEIGNITER waw baru deger aja saya langsung kaget mahluk apaan nih hehehe... tapi pas saya pelajarin dan terus pelajarin cukup lumaya menegang kan, sampe 2 bulan saya belum mengerti saya terus cari tutoriar mengenai (CI) waduh masih jarang ternyata buku nya di internet juga tidak cukup banyak, pas saya liat di forum CI waw semua hal2 tentang CI distu banyak, tapi emang dasar oarang indonesia, kalo tulisan bahasa inggris ga bisa (itu sih saya nya aja yang ga ngrti b.ing) saya mulai cari nama2 orang indonesia dan mendapatkan banyak teman distu lalu saya di bantu untuk mencarikan sebuah solusi dan di ajarin apa sih CI itu ?

lumayan asik juga yah biar pun masih kurang paham.. tapi akan saya coba gambarkan CI buatan saya ini.

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".


Bersambung dulu yah .. lagi mau baca-baca lagi buat sidang nanti biar ga kaku :) Read More......
 

© Copyright by Guntur Pana'atmaja | Template by guntur | guntur 2010