Aplikasi

Objek aplikasi mengenkapsulasi konteks eksekusi di dalam request yang diproses. Tugas utamanya adalah mengumpulkan informasi mengenai request, dan mengirimkannya ke controller yang bersangkutan untuk diproses lebih lanjut. Selain itu, juga sebagai tempat utama menyimpan konfigurasi level aplikasi. Oleh karena itulah, objek aplikasi disebut juga sebagai front-controller(controller depan).

Aplikasi dibuat sebagai singleton(tunggal) oleh entry script. Singleton aplikasi dapat diakses di mana saja melalui Yii::app().

1. Konfigurasi Aplikasi

Secara default, objek aplikasi adalah instance dari CWebApplication. Untuk mengkustomisasi, pada umumnya kita membuat sebuah file konfigurasi (atau array) untuk inisialisasi nilai propertinya saat instance aplikasi dibuat. Cara lainnya adalah dengan menurunkan CWebApplication.

Konfigurasinya adalah array pasangan key-value. Setiap kunci mewakili nama properti instance aplikasi, dan setiap nilai adalah nilai awal dari properti tersebut. Sebagai contoh, konfigurasi berikut mengeset aplikasi name dan properti defaultController aplikasi.

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:

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, seperti berikut:

$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 dapat memanggil PHP include() guna menyertakan file konfigurasi lainnya dan menggabungkannya ke dalam array konfigurasi yang lengkap.

2. Direktori Basis Aplikasi

Direktori dasar aplikasi merujuk ke direktori root yang berisi semua data dan script 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 dalam konfigurasi aplikasi.

Isi di dalam direktori basis aplikasi harus terlindung dari akses oleh para pengguna Web. Dengan Apache HTTP server, hal 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 objek aplikasi dapat dikustomisasi secara mudah dan diperkaya dengan arsitektur komponennya yang fleksibel. Objek tersebut mengatur satu set komponen aplikasi, masing-masing mengimplementasi fitur tertentu. Sebagai contoh, aplikasi menangani request pengguna dengan bantuan komponen CUrlManager dan CHttpRequest.

Dengan mengkonfigurasi properti komponen 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 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, 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 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 mengumpulkan request pengguna dan menyediakan informasi seperti URL yang di-request, cookies. Dengan mengkonfigurasi properti komponen inti ini, kita dapat mengubah hampir segala aspek perilaku standar Yii.

Berikut daftar komponen inti yang dideklarasikan oleh CWebApplication.

5. Siklus Aplikasi

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

  1. Pra-inisialisasi aplikasi dengan CApplication::preinit();

  2. Menyiapkan kelas autoloader dan penanganan kesalahan;

  3. Meregistrasi komponen inti aplikasi;

  4. Mengambil konfigurasi aplikasi;

  5. Menginisialisasi aplikasi dengan CApplication::init()

    • Registrasi behavior aplikasi
    • Mengambil komponen aplikasi statis;
  6. Menghidupkan event onBeginRequest;

  7. Mengolah request pengguna:

    • Mengumpulkan request pengguna;
    • Membuat controller;
    • Menjalankan controller;
  8. Menghidupkan event onEndRequest;

$Id: basics.application.txt 3251 2011-06-01 00:24:06Z qiang.xue $

Be the first person to leave a comment

Please to leave your comment.