Culture

Yii2 - [Konsep] Array pada Session

Yii memiliki keterbatasan ketika menggunakan array sebagai data yang tersimpan dalam session. Komponen session tidak memungkinkan kita untuk mengubah data yang tersimpan pada sebuah element array. sebagai contoh:
$session = Yii::$app->session; // Kode berikut tidak akan bisa kita gunakan karena kita mengubah elemen array satu per satu. $session['captcha']['number'] = 5; $session['captcha']['lifetime'] = 3600; // Kode berikut bisa kita gunakan karena kita mengubah semua elemen array sekaligus. $session['captcha'] = [ 'number' => 5, 'lifetime' => 3600, ]; // Kode berikut bisa kita gunakan: echo $session['captcha']['lifetime'];
Untuk mengatasi hal ini ada beberapa alternatif yang bisa kita gunakan:
$session = Yii::$app->session; // Menggunakan $_SESSION (pastikan Yii::$app->session->open() sudah di panggil) $_SESSION['captcha']['number'] = 5; $_SESSION['captcha']['lifetime'] = 3600; // Kita tampung variabel session yang berupa array ke dalam sebuah variabel, kemudian kita rubah datanya dan kita simpan kembali $captcha = $session['captcha']; $captcha['number'] = 5; $captcha['lifetime'] = 3600; $session['captcha'] = $captcha; // Menggunakan ArrayObject $session['captcha'] = new \ArrayObject; ... $session['captcha']['number'] = 5; $session['captcha']['lifetime'] = 3600; // Menyimpan data array menggunakan awalan kata kunci yang sama $session['captcha.number'] = 5; $session['captcha.lifetime'] = 3600;
Untuk performa yang lebih baik dan kemudahan membaca program, yii merekomendasikan alternatif yang terakhir. Yaitu, dari pada menyimpan array ke dalam sebuah variabel session, kita menyimpan setiap elemen array  sebagai sebuah variabel session yang menggunakan kata kunci yang sama dengan elemen array yang lain.

No comments:

Powered by Blogger.