Files
yii/docs/guide/id/basics.application.txt
2009-11-01 17:58:27 +00:00

219 lines
7.9 KiB
Plaintext

Aplikasi
========
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](/doc/guide/basics.entry).
Kerangka aplikasi dapat diakses di mana saja melalui [Yii::app()|YiiBase::app].
Konfigurasi Aplikasi
--------------------
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|CApplication::name] dan properti
[defaultController|CWebApplication::defaultController]
aplikasi.
~~~
[php]
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,
~~~
[php]
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](/doc/guide/basics.entry):
~~~
[php]
$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
-----------------------
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|CWebApplication::basePath] dalam [konfigurasi aplikasi](#application-configuration).
Isi di dalam direktori basis aplikasi harus dilindungi dari akses oleh
para pengguna Web. Dengan [Apache HTTP
server](http://httpd.apache.org/), ini bisa dilakukan secara mudah dengan
menempatkan file `.htaccess` di bawah direktori basis. Adapun isi file `.htaccess`
adalah sebagai berikut,
~~~
deny from all
~~~
Komponen Aplikasi
-----------------
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|CApplication::components] 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,
~~~
[php]
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|CApplication::preload]
aplikasi.
Komponen Aplikasi Inti
----------------------
Yii sudah mendefinisikan satu set komponen aplikasi inti guna menyediakan fitur
yang umum dalam aplikasi Web. Sebagai contoh, komponen
[request|CWebApplication::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|CWebApplication::assetManager]: [CAssetManager] -
mengatur penerbitan file asset privat.
- [authManager|CWebApplication::authManager]: [CAuthManager] - mengatur role-based access control (RBAC).
- [cache|CApplication::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|CWebApplication::clientScript]: [CClientScript] -
mengatur naskah klien (javascript dan CSS).
- [coreMessages|CApplication::coreMessages]: [CPhpMessageSource] -
menyediakan terjemahan pesan inti yang dipakai oleh Yii framework.
- [db|CApplication::db]: [CDbConnection] - menyediakan koneksi database.
Catatan, Anda harus mengkonfigurasi properti
[connectionString|CDbConnection::connectionString] untuk menggunakan
komponen ini.
- [errorHandler|CApplication::errorHandler]: [CErrorHandler] - menangani
eksepsi dan kesalahan PHP yang tidak tercakup.
- [messages|CApplication::messages]: [CPhpMessageSource] - menyediakan
terjemahan pesan yang dipakai oleh aplikasi Yii.
- [request|CWebApplication::request]: [CHttpRequest] - menyediakan
informasi terkait dengan permintaan penggguna.
- [securityManager|CApplication::securityManager]: [CSecurityManager] -
menyediakan layanan terkait-keamanan, seperti hashing, enkripsi.
- [session|CWebApplication::session]: [CHttpSession] - menyediakan
fungsionalitas terkait-sesi.
- [statePersister|CApplication::statePersister]: [CStatePersister] -
menyediakan metode persisten kondisi global.
- [urlManager|CWebApplication::urlManager]: [CUrlManager] - menyediakan
fungsionalitas penguraian dan pembuatan URL.
- [user|CWebApplication::user]: [CWebUser] - mewakili informasi identitas
pengguna saat ini.
- [themeManager|CWebApplication::themeManager]: [CThemeManager] - mengatur tema.
Siklus Aplikasi
---------------
Ketika menangani permintaan pengguna, aplikasi akan berada dalam siklus masa hidup
sebagai berikut:
0. Pra-inisialisasi aplikasi dengan [CApplication::preinit()];
1. Menyiapkan kelas autoloader dan penanganan kesalahan;
2. Meregistrasi komponen inti aplikasi;
3. Mengambil konfigurasi aplikasi;
4. Menginisialisasi aplikasi dengan [CApplication::init()]
- Mengambil komponen statis aplikasi;
- Mengambil komponen aplikasi statis;
5. Menghidupkan event [onBeginRequest|CApplication::onBeginRequest];
6. Mengolah permintaan pengguna:
- Memecah permintaan pengguna;
- Membuat pengontrol;
- Menjalankan pengontrol;
7. Menghidupkan event [onEndRequest|CApplication::onEndRequest];
<div class="revision">$Id: basics.application.txt 846 2009-03-17 17:35:33Z qiang.xue $</div>