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

 
Bước 3: Widening Your Net of team Drupal

Bước 3: Widening Your Net of team Drupal

Eric Gaffen, Global Manager, Talent Acquisition at Acquia, is constantly getting requests for new hires from the leadership at Acquia. His previous company grew from 1600 to 3000 in six years, and from that experience, Eric knows larger companies have a very standardized approach to job descriptions which match compensation and evaluation. Things are quite different here. 

Android

Thị trường ưa chuộng Android hơn Windows Phone

Sau vụ kiện Samsung - Apple đình đám mà nạn nhân gián tiếp là Android, một số hãng smartphone Android đang tìm phương án thay thế dù vẫn tuyên bố gắn bó với nền tảng của Google.

Hướng dẫn Customizing Views với Context

Hướng dẫn Customizing Views với Context

At certain scales, the ability of views to provide multiple block or page displays can become a hindrance to the performance of the UI. I recently tackled a problem with a view that contained 45 nearly identical displays and was growing

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

 

Diet con trung