mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-05 07:44:05 +01:00
219 lines
8.1 KiB
Plaintext
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> |