Jumat, 25 Juli 2008

Ternyata asik juga pake codeigniter

Selama PKL pake php, akhirnya baru hari ini aku sempt untuk ngeliat gimana CI sebenarnya. CI menerapkan sistem MVC (modle, view, controller). Ketika sebuah page di request, maka request tersebut akan dihandle oleh file “index.php” yang berada di root folder Codeigniter. Pada file tersebut akan disetting semua config environment dari codeigniter. Setelah itu akan dipanggil file “system/codeigniter/CodeIgniter.php”. File CodeIgniter.php disini bertindak sebagai front controller dari framework ini. Pada file ini class Config, Router, Input, URL dan hook di instant. Setelah mengload semua libary tadi maka barulah fitur HOOKING (pre_system), CACHING pada codeigniter dijalankan.

Setelah itu Codeigniter.php akan memanggil file “system/codeigniter/Base4.php” atau “system/codeigniter/Base5.php”, tergantung versi PHP yang digunakan. Base4/5.php ini digunakan untuk membuat pattern singleton yang berarti hanya satu instant yang dapat dibuat. karena setiap public methondnya akan dipanggil &get_instance function. Object tersebutlah yang menjadi object induk dari framework ini.

Setelah Base4/5 dipanggil barulah router beraksi dengan memanggl default controller atau controller yang diminta. Lalu di lakukan pengecekan sekuriti, jika sukses maka HOOKING pre_controller akan dilakukan. setelah itu barulah object $CI terbentuk.

1
$CI = new $class();

$class berisi nama kelas controller yang kita panggil. Setela itu dilakukan pengecekan apakah request tersebut adalah request scalffolding atau bukan. Jika bukan maka akan di panggil HOOKING post_controller_constructor dan method yang di request. Lalu Dipanggil HOOKING post_controller. Jika kita tidak mendefinisikan hook display_override maka akan ditampilkan di browser.

Lalu aku coba modif controller welcome.php

1
2
3
4
5
6
7
8
9
10
11
12
13
class Welcome extends Controller {

function Welcome()
{
parent::Controller();
}

function index()
{
$data['kelas']= get_declared_classes();
$this->load->view('welcome_message',$data);
}
}

aku dapet 150 class yang di load tetapi sebagian adalah kelas yang dimiliki oleh CI yaitu
# Kelas :CI_Benchmark
# Kelas :CI_Hooks
# Kelas :CI_Config
# Kelas :CI_URI
# Kelas :CI_Router
# Kelas :CI_Output
# Kelas :CI_Input
# Kelas :CI_Language
# Kelas :CI_Base
# Kelas :Controller
# Kelas :Welcome
# Kelas :CI_Loader

Tidak ada komentar: