Objek aplikasi mengenkapsulasi konteks eksekusi di dalam request yang diproses. Tugas
utamanya adalah mengumpulkan informasi mengenai request,
dan mengirimkannya ke controller yang bersangkutan untuk diproses lebih lanjut. Selain itu,
juga sebagai tempat utama menyimpan konfigurasi level aplikasi. Oleh karena
itulah, objek aplikasi disebut juga sebagai front-controller(controller depan)
.
Aplikasi dibuat sebagai singleton(tunggal) oleh entry script. Singleton aplikasi dapat diakses di mana saja melalui Yii::app().
Secara default, objek aplikasi adalah instance dari CWebApplication. Untuk mengkustomisasi, pada umumnya kita membuat sebuah file konfigurasi (atau array) untuk inisialisasi nilai propertinya saat instance aplikasi dibuat. Cara lainnya adalah dengan menurunkan CWebApplication.
Konfigurasinya adalah array pasangan key-value. Setiap kunci mewakili nama properti instance aplikasi, dan setiap nilai adalah nilai awal dari properti tersebut. Sebagai contoh, konfigurasi berikut mengeset aplikasi name dan properti defaultController aplikasi.
array(
'name'=>'Yii Framework',
'defaultController'=>'site',
)
Biasanya kita menyimpan konfigurasi dalam skrip PHP terpisah (misal
protected/config/main.php
). Di dalam skrip, kita mengembalikan
array konfigurasi sebagai berikut:
return array(...);
Untuk menerapkan konfigurasi, kita mengirim nama file konfigurasi sebagai sebuah parameter bagi constructor aplikasi, atau ke Yii::createWebApplication() , yang biasanya dikerjakan dalam skrip entri, seperti berikut:
$app=Yii::createWebApplication($configFile);
Tip: Jika konfigurasi aplikasi sangat kompleks, kita dapat memisahkannya ke dalam beberapa file, masing-masing mengembalikan bagian array konfigurasi. Selanjutnya, dalam file konfigurasi utama, kita dapat memanggil PHP
include()
guna menyertakan file konfigurasi lainnya dan menggabungkannya ke dalam array konfigurasi yang lengkap.
Direktori dasar aplikasi merujuk ke direktori root yang berisi semua
data dan script PHP yang sensitif. Secara default, direktori ini adalah subdirektori
bernama protected
yang ditempatkan di bawah direktori yang berisi skrip
entri. Direktori ini dapat dikustomisasi melalui konfigurasi properti
basePath dalam konfigurasi aplikasi.
Isi di dalam direktori basis aplikasi harus terlindung dari akses oleh
para pengguna Web. Dengan Apache HTTP server,
hal ini bisa dilakukan secara mudah dengan
menempatkan file .htaccess
di bawah direktori basis. Adapun isi file .htaccess
adalah sebagai berikut,
deny from all
Fungsionalitas objek aplikasi dapat dikustomisasi secara mudah dan diperkaya dengan arsitektur komponennya yang fleksibel. Objek tersebut mengatur satu set komponen aplikasi, masing-masing mengimplementasi fitur tertentu. Sebagai contoh, aplikasi menangani request pengguna dengan bantuan komponen CUrlManager dan CHttpRequest.
Dengan mengkonfigurasi properti komponen aplikasi, kita bisa mengkustomisasi kelas dan nilai properti setiap komponen aplikasi yang dipakai dalam sebuah aplikasi. Sebagai contoh, kita dapat mengkonfigurasi komponen CMemCache agar bisa menggunakan beberapa server memcache untuk caching,
array(
......
'components'=>array(
......
'cache'=>array(
'class'=>'CMemCache',
'servers'=>array(
array('host'=>'server1', 'port'=>11211, 'weight'=>60),
array('host'=>'server2', 'port'=>11211, 'weight'=>40),
),
),
),
)
Dalam contoh di atas, kita menambahkan elemen cache
pada array components
. Elemen
cache
menyatakan bahwa kelas komponennya adalah
CMemCache
dan properti servers
juga harus diinisialisasi.
Untuk mengakses komponen aplikasi, gunakan Yii::app()->ComponentID
, dengan
ComponentID
merujuk pada ID komponen (contoh Yii::app()->cache
).
Komponen aplikasi dapat dinonaktifkan dengan menyetel enabled
menjadi false
dalam konfigurasinya. Null dikembalikan saat kita mengakses komponen yang telah dinonaktifkan.
Tip: Secara default, komponen aplikasi dibuat bila diperlukan. Ini berarti komponen aplikasi mungkin tidak dibuat sama sekali jika tidak diakses saat pengguna melakukan request. Hasilnya, performa aplikasi keseluruhan tidak akan menurun walaupun dikonfigurasi dengan banyak komponen. Beberapa komponen aplikasi (contoh CLogRouter) mungkin perlu dibuat tidak peduli apakah diakses atau tidak. Untuk melakukannya, daftarkan ID masing-masing dalam properti preload aplikasi.
Yii sudah mendefinisikan satu set komponen aplikasi inti guna menyediakan fitur yang umum dalam aplikasi Web. Sebagai contoh, komponen request dipakai untuk mengumpulkan request pengguna dan menyediakan informasi seperti URL yang di-request, cookies. Dengan mengkonfigurasi properti komponen inti ini, kita dapat mengubah hampir segala aspek perilaku standar Yii.
Berikut daftar komponen inti yang dideklarasikan oleh CWebApplication.
assetManager: CAssetManager - mengatur publikasi file asset privat.
authManager: CAuthManager - mengatur role-based access control (RBAC).
cache: CCache - menyediakan fungsionalitas caching data. Catatan, Anda harus menetapkan kelas sebenarnya (misal CMemCache, CDbCache). Jika tidak, null akan dikembalikan saat Anda mengakses komponen ini.
clientScript: CClientScript - mengatur skrip klien (javascript dan CSS).
coreMessages: CPhpMessageSource - menyediakan terjemahan pesan inti yang dipakai oleh Yii framework.
db: CDbConnection - menyediakan koneksi database. Catatan, Anda harus mengkonfigurasi properti connectionString untuk menggunakan komponen ini.
errorHandler: CErrorHandler - menangani exception dan kesalahan PHP yang tidak tercakup.
format: CFormatter - memformat nilai data untuk sisi tampilan.
messages: CPhpMessageSource - menyediakan terjemahan pesan yang dipakai oleh aplikasi Yii.
request: CHttpRequest - menyediakan informasi terkait dengan request penggguna.
securityManager: CSecurityManager - menyediakan layanan terkait keamanan, seperti hashing dan enkripsi.
session: CHttpSession - menyediakan fungsionalitas terkait sesi.
statePersister: CStatePersister - menyediakan metode persisten kondisi global(global state persistence).
urlManager: CUrlManager - menyediakan fungsionalitas penguraian dan pembuatan URL.
user: CWebUser - mewakili informasi identitas pengguna saat ini.
themeManager: CThemeManager - mengatur tema.
Ketika menangani request pengguna, aplikasi akan berada dalam siklus masa hidup sebagai berikut:
Pra-inisialisasi aplikasi dengan CApplication::preinit();
Menyiapkan kelas autoloader dan penanganan kesalahan;
Meregistrasi komponen inti aplikasi;
Mengambil konfigurasi aplikasi;
Menginisialisasi aplikasi dengan CApplication::init()
Menghidupkan event onBeginRequest;
Mengolah request pengguna:
Menghidupkan event onEndRequest;
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.