Aplikasi menggambarkan konteks dijalankannya pemrosesan sebuah permintaan. Tugas
utamanya adalah memecahkan permintaan pengguna dan meneruskannya ke pengontrol
terkait guna pemrosesan selanjutnya. Ia juga bertindak sebagai tempat pusat
untuk memelihara konfigurasi tingkat-aplikasi. Oleh karena itu, aplikasi juga
disebut pengontrol-depan
.
Aplikasi dibuat sebagai kerangka tunggal oleh naskah entri. Kerangka aplikasi dapat diakses di mana saja melalui Yii::app().
Standarnya, aplikasi adalah turunan dari CWebApplication. Untuk mengkustomisasinya, kami sediakan file konfigurasi (atau array) guna mengawali nilai propertinya saat turunan aplikasi dibuat. Alternatif cara mengkustomisasi aplikasi adalah dengan memperluas CWebApplication.
Konfigurasi adalah array pasangan kunci-nilai. Setiap kunci mewakili nama properti turunan aplikasi, dan setiap nilai adalah nilai awal dari properti tersebut. Sebagai contoh, koonfigurasi berikut mengkonfigurasi aplikasi name dan properti defaultController.
array(
'name'=>'Yii Framework',
'defaultController'=>'site',
)
Biasanya kami menyimpan konfigurasi dalam naskah PHP terpisah (misal
protected/config/main.php
). Di dalam naskah, kami mengembalikan
array konfigurasi sebagai berikut,
return array(...);
Untuk menerapkan konfigurasi, kami mengoper nama file konfigurasi sebagai parameter bagi pembentuk aplikasi, atau ke Yii::createWebApplication() seperti yang berikut, yang biasanya dikerjakan dalam naskah entri:
$app=Yii::createWebApplication($configFile);
Tip: Jika konfigurasi aplikasi sangat kompleks, kami dapat memisahannya ke dalam beberapa file, masing-masing mengembalikan bagian array konfigurasi. Selanjutnya, dalam file konfigurasi utama, kami memanggil PHP
include()
guna menyertakan file konfigurasi lainnya dan menggabungkannya ke dalam array konfigurasi yang lengkap.
Direktori basis aplikasi merujuk ke direktori root yang berisi semua
data dan naskah PHP sensitif-keamanan. Standarnya, ia berupa subdirektori
bernama protected
yang ditempatkan di bawah direktori yang berisi naskah
entri. Ia dapat dikustomisasi melalui setelan properti
basePath dalam konfigurasi aplikasi.
Isi di dalam direktori basis aplikasi harus dilindungi dari akses oleh
para pengguna Web. Dengan Apache HTTP
server, ini bisa dilakukan secara mudah dengan
menempatkan file .htaccess
di bawah direktori basis. Adapun isi file .htaccess
adalah sebagai berikut,
deny from all
Fungsionalitas aplikasi dapat dikustomisasi secara mudah dan diperkaya dengan arsitektur komponennya yang fleksibel. Aplikasi mengatur satu set komponen aplikasi, masing-masing mengimplementasi fitur tertentu. Sebagai contoh, aplikasi memecahkan permintaan pengguna dengan bantuan komponen CUrlManager dan CHttpRequest.
Dengan mengkonfigurasi properti komponen aplikasi, kita bisa mengkustomisasi kelasi dan nilai properti setiap komponen aplikasi yang dipakai dalam sebuah aplikasi. Sebagai contoh, kita dapat mengkonfigurasi komponen CMemCache agar ia bisa menggunakan multipel 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
, di mana
ComponentID
merujuk pada ID komponen (contoh Yii::app()->cache
).
Komponen aplikasi dapat dimatikan dengan menyetel enabled
menjadi false
dalam konfigurasinya. Null dikembalikan saat kita mengakses komponen yang dimatikan.
Tip: Secara standar, komponen aplikasi dibuat bila diperlukan. Ini berarti komponen aplikasi mungkin tidak dibuat sama sekali jika tidak diakses saat pengguna meminta. Hasilnya, performansi keseluruhan mungkin tidak menurun walaupun aplikasi dikonfigurasi dengan banyak komponen. Beberapa komponen aplikasi (contoh CLogRouter) mungkin perlu dibuat tidak peduli apakah ia 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 memecahkan permintaan pengguna dan menyediakan informasi seperti URL, cookies. Dengan mengkonfigurasi properti komponen inti ini, kita dapat mengubah perilaku standar Yii dalam hampir segala aspek.
Di bawah ini kami mendata komponen inti yang dideklarasikan oleh CWebApplication.
assetManager: CAssetManager - mengatur penerbitan 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 naskah 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 eksepsi dan kesalahan PHP yang tidak tercakup.
messages: CPhpMessageSource - menyediakan terjemahan pesan yang dipakai oleh aplikasi Yii.
request: CHttpRequest - menyediakan informasi terkait dengan permintaan penggguna.
securityManager: CSecurityManager - menyediakan layanan terkait-keamanan, seperti hashing, enkripsi.
session: CHttpSession - menyediakan fungsionalitas terkait-sesi.
statePersister: CStatePersister - menyediakan metode persisten kondisi global.
urlManager: CUrlManager - menyediakan fungsionalitas penguraian dan pembuatan URL.
user: CWebUser - mewakili informasi identitas pengguna saat ini.
themeManager: CThemeManager - mengatur tema.
Ketika menangani permintaan pengguna, aplikasi akan berada dalam siklus masa hidup sebagai berikut:
Menyiapkan kelas autoloader dan penanganan kesalahan;
Meregistrasi komponen inti aplikasi;
Mengambil konfigurasi aplikasi;
Menginisialisasi aplikasi dengan CApplication::init()
Menghidupkan event onBeginRequest;
Mengolah permintaan pengguna:
Menghidupkan event onEndRequest;
Signup or Login in order to comment.