Culture

Yii2 - [Konsep] Session pada Yii


Dengan menggunakan Session dan Cookies, kita dapat mempertahankan(menyimpan) data tertentu walaupun user telah melakukan request yang berbeda-beda. Pada PHP biasa kita dapat mengakses session dan cookies menggunakan variabel global $_SESSION dan $_COOKIE.

Session

Pada Yii, kita dapat mengakses session melalui komponen aplikasi "session" meggunakan Yii::$app->session, yang merupakan instansiasi dari class yii/web/Session.

Membuka dan Menutup Session

Untuk membuka dan menutup session, kita dapat menggunakan perintah berikut:
$session = Yii::$app->session; // Mengecek apakah session sudah terbuka. if ($session->isActive) ... // Membuka session. $session->open(); // Menutup session $session->close(); // Menghapus semua data yang tersimpan di dalam session. $session->destroy();
Kita dapat memanggil method(fungsi) open() dan close() beberapa kali tanpa perlu khawatir akan menyebabkan error, karena di dalam method tersebut secara default akan melakukan pengecekan terlebih dahulu apakah session sudah terbuka.

Mengambil Data yang tersimpan di Session

Untuk mengambil data yang tersimpan di dalam session, dapat kita lakukan dengan cara sebagai berikut:
// Pertama kita buat variabel untuk memanggil session.
$session = Yii::$app->session; // Mengambil variabel yang ada di dalam session.
// Perintah berikut akan menghasilkan output yang sama: $language = $session->get('language'); $language = $session['language']; $language = isset($_SESSION['language']) ? $_SESSION['language'] : null; // Menyimpan data ke dalam salah satu variabel yang ada di dalam session.
// Perintah berikut akan menghasilkan output yang sama: $session->set('language', 'en-US'); $session['language'] = 'en-US'; $_SESSION['language'] = 'en-US'; // Menghapus variabel yang ada di dalam session.
// Perintah berikut akan menghasilkan output yang sama:
$session->remove('language'); unset($session['language']); unset($_SESSION['language']); // Mengecek apakah sebuah variabel ada di dalam session.
// Perintah berikut akan menghasilkan output yang sama: if ($session->has('language')) ... if (isset($session['language'])) ... if (isset($_SESSION['language'])) ... // Mengenumerasi semua variabel yang ada di dalam session. // Perintah berikut akan menghasilkan output yang sama:
foreach ($session as $name => $value) ... foreach ($_SESSION as $name => $value) ...
Catatan:
Pada saat kita mengakses data dari komponen session, sebuah session akan otomatis terbuka jika sebelumnya belum terbuka. Ini berbeda dengan kita mengakses data session melalui $_SESSION yang mengharuskan kita memanggil method session_start().


Next

No comments:

Powered by Blogger.