0 follower

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. Kerangka aplikasi dapat diakses di mana saja melalui Yii::app().

1. 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 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.

2. 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 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

3. 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 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.

4. Komponen Aplikasi Inti

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.

5. Siklus Aplikasi

Ketika menangani permintaan pengguna, aplikasi akan berada dalam siklus masa hidup sebagai berikut:

  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;
  5. Menghidupkan event onBeginRequest;

  6. Mengolah permintaan pengguna:

    • Memecah permintaan pengguna;
    • Membuat pengontrol;
    • Menjalankan pengontrol;
  7. Menghidupkan event onEndRequest;