Zend Framework: Zend_Session_Namespace

Zend Framework: Zend_Session_Namespace

Thông thường việc sử dụng session cũng đơn giản nhưng Zend cũng đã viết cho chúng ta một ứng dụng Zend Session giúp chúng ta khai báo và thao tác với session nhanh gọn hơn, đặc biệt khi thao tác với giỏ hàng hay những ứng dụng sử dụng lượng session lớn, bài viết này sẽ giới thiệu về cách sử dụng lớp Zend_Session_Namespace() để tạo và thao tác với session .

Nếu chúng ta khai báo một đối tượng và tạo ra một thuộc tính như sau:

$defaultNamespace = new Zend_Session_Namespace();
$defaultNamespace>user = "myusername";

Điều này là tương đương theo cách viết thông thường là:

$_SESSION['Default']['user'] = "myusername";

Nếu ta khai báo như sau:

$authNamespace = new Zend_Session_Namespace('Zend_Auth');
$authNamespace->user = "myusername";

Điều này tương đương theo cách viết thông thường là:

$_SESSION['Zend_Auth']['user'] = "myusername";

Ta có thể truy cập session trên như một thuộc tính của đối tượng thông thường:

echo $authNamespace->user;

Hoặc chúng ta có thể sử dụng phương thức getIterator() để truy cập session như dạng mảng:

$zendAuth = $authNamespace->getIterator();
echo $zendAuth['user'];

Để hủy một session nào đó ta sử dụng hàm unset trong PHP thông thường:

unset($authNamespace->user)

Để hủy tất cả các session của một namespace ta sử dụng phương thức unsetAll():

$authNamespace->unsetAll();

Ngoài ra ta có thể khóa một namespace,làm cho namespace đó ở trạng thái chỉ đọc nghĩa là không được phép tạo thêm hoặc thay đổi các giá trị của session như ví dụ sau:

$authNamespace->lock();

Sử dụng phương thức isLocked() để kiểm tra xem namespace có bị khóa hay không, sử dụng phương thức unLock() để mở khóa như ví dụ sau:

if($authNamespace->isLocked()){

   $authNamespace->unLock();

}

Mặc đinh khi bạn gọi lớp Zend_Session_Namespace thì Zend_Session::start() đã được thực hiện, để sử dụng session ở một trang khác bạn có thể gọi Zend_Session_Namespace bất cứ khi nào bạn cần, nhưng cách thực hành tốt nhất là ta khai báo Zend_Session::start() ở trong tập tin bootstrap.ini để có sử dụng session cho cả ứng dụng bằng cách gọi session thông thường.

Một điều chú ý là nếu bạn đã sử dụng Zend_Session_Namespace của Zend thì không nên truy cập session trực tiếp với session_start() điều này Zend sẽ báo lỗi.

Tiếp theo ta sẽ đề cập tới chức năng xét thời gian tồn tại cho namespace.  Để làm được điều này Zend đã xây dựng sẵn 2 phương thức trong lớp Zend_Session_Namespace setExpirationHops()setExpirationSeconds()

setExpirationSeconds()

Thời gian tính bằng giây namespace hết hiệu lực, phương thức có 2 tham số, tham số thứ nhất là thời gian, tham số thứ 2 là danh sách các session hay các thuộc tính của namespace được áp dụng, mặc định là tất cả, nếu áp dụng cho một thuộc tính thì tham số thứ 2 để tên của thuộc tính dưới dạng chuỗi, nếu có nhiều thuộc tính thì đưa vào một mảng. Ví dụ:

$authNamespace->(5,'user');

setExpirationHops()

Xác định thời gian tồn tại cho namespace bằng số lần gửi yêu cầu truy cập session liên tiếp. Phương thức có 3 tham số, tham số thứ nhất là số lần gửi yêu cầu, tham số thứ 2 giống như phương thức setExpirationSeconds(), tham số thứ 3 là dạng boolean nếu là true thì chỉ áp dụng setExpirationHops() khi  namespace được sử dụng nghĩa là khi bạn gọi tới lớp Zend_Session_Namespace của namespace bạn muốn sử dụng, ngược lại là false  thì không quan tâm tới namespace có được sử dụng hay không, tham số thứ 3 mặc định được gán giá trị là false. Ví dụ:

$authNamespace->setExpirationHops(4,'user');

Bạn có thể tham khảo thêm về Zend_Session tại framework.zend.com

Bạn thấy bài viết này như thế nào?: 
Average: 10 (1 vote)
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Mã bưu chính ở Việt Nam

Mã bưu chính ở Việt Nam kể từ năm 2018 được điều chỉnh lại gồm 5 chữ số

Thông thường mã bưu điện chỉ có 5 số, tuy nhiên trên một số website nước ngoài yêu cầu bắt buộc nhập vào 6 chữ số như chuẩn US

Không nên kết bạn với 'người lạ' trên Facebook

Không nên kết bạn với người lạ trên Facebook

Nếu bạn nghĩ những thông tin các nhân của mình được bảo vệ an toàn trước người lạ thì bạn nên nghĩ lại.

CMS Drupal, Drupal 7 Theme, Drupal Modules, Drupal Webform, Khoa hoc Drupal

Drupal Theme Developer Course

Việc chuyển đổi website design thành giao diện Drupal đòi hỏi một số kiến thức nhất định. Drupal Theming có thể rất chậm, nhưng có thể làm rất nhanh chóng, nếu bạn hiểu Drupal và cách theming Drupal một cách chuẩn mực.

Công ty diệt chuột T&C

 

Diet con trung