Files
yii/docs/guide/id/basics.application.txt
2011-01-16 14:55:27 +00:00

219 lines
8.1 KiB
Plaintext

Aplikasi
========
Aplikasi menggambarkan konteks dijalankannya pemrosesan sebuah permintaan. Tugas
utamanya adalah menangani permintaan pengguna dan meneruskannya ke kontroler(controller)
guna pemrosesan selanjutnya. Aplikasi juga bertindak sebagai tempat pusat
untuk menyimpan konfigurasi tingkat-aplikasi. Oleh karena itu, aplikasi juga
disebut `kontroler-depan(front controller)`.
Aplikasi dibuat sebagai singleton(tunggal) oleh [skrip entri](/doc/guide/basics.entry).
Singleton aplikasi dapat diakses di mana saja melalui [Yii::app()|YiiBase::app].
Konfigurasi Aplikasi
--------------------
Secara default, aplikasi adalah instance dari [CWebApplication]. Untuk
mengkustomisasinya, kita pada umumnya menyediakan file konfigurasi (atau array) untuk inisialisasi nilai
propertinya saat instance aplikasi dibuat. Cara alternatif mengkustomisasi aplikasi
adalah dengan menurunkan [CWebApplication].
Konfigurasi adalah array pasangan kunci-nilai(key-value). Setiap kunci mewakili nama
properti instance aplikasi, dan setiap nilai adalah nilai awal dari properti
tersebut. Sebagai contoh, konfigurasi berikut
mengkonfigurasi aplikasi [name|CApplication::name] dan properti
[defaultController|CWebApplication::defaultController]
aplikasi.
~~~
[php]
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,
~~~
[php]
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](/doc/guide/basics.entry), seperti berikut:
~~~
[php]
$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 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 skrip 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|CWebApplication::basePath] dalam [konfigurasi aplikasi](#application-configuration).
Isi di dalam direktori basis aplikasi harus terlindung dari akses oleh
para pengguna Web. Dengan [Apache HTTP
server](http://httpd.apache.org/), hal 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 menangani permintaan pengguna dengan bantuan komponen [CUrlManager]
dan [CHttpRequest].
Dengan mengkonfigurasi properti [komponen|CApplication::components] 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 penembolokan(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`, 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|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 menangani permintaan pengguna
dan menyediakan informasi seperti URL, cookies. Dengan mengkonfigurasi properti
komponen inti ini, kita dapat mengubah perilaku standar Yii dalam hampir di segala
aspek.
Di bawah ini kami mendata komponen inti yang dideklarasikan oleh
[CWebApplication].
- [assetManager|CWebApplication::assetManager]: [CAssetManager] -
mengatur publikasi file asset privat.
- [authManager|CWebApplication::authManager]: [CAuthManager] - mengatur role-based access control (RBAC).
- [cache|CApplication::cache]: [CCache] - menyediakan fungsionalitas
penembolokan(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 skrip 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
exception 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(global state persistence).
- [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()]
- Registrasi behavior aplikasi
- Mengambil komponen aplikasi statis;
5. Menghidupkan event [onBeginRequest|CApplication::onBeginRequest];
6. Mengolah permintaan pengguna:
- Menangani permintaan pengguna;
- Membuat kontroler;
- Menjalankan kontroler;
7. Menghidupkan event [onEndRequest|CApplication::onEndRequest];
<div class="revision">$Id: basics.application.txt 2488 2010-09-20 11:38:02Z mdomba $</div>