欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Zend Framework入門教程之Zend_Session會話操作詳解

 更新時間:2016年12月08日 11:34:08   作者:牛逼的霍嘯林  
這篇文章主要介紹了Zend Framework入門教程之Zend_Session會話操作,結(jié)合實例形式詳細分析了Zend_Session會話操作的具體使用技巧,需要的朋友可以參考下

本文實例講述了Zend Framework入門教程之Zend_Session會話操作。分享給大家供大家參考,具體如下:

會話命名空間

實現(xiàn)會話

代碼:

<?php
require_once "Zend/Session/Namespace.php";
$myNamespace = new Zend_Session_Namespace('Myspace');
if(isset($myNamespace->numberOfPageRequests))
{
  $myNamespace->numberOfPageRequests++;
}else{
  $myNamespace->numberOfPageRequests = 1;
}
echo "用戶的瀏覽次數(shù)為:";
echo "<font size=\"6\" color=\"#ff0000\">";
echo $myNamespace->numberOfPageRequests;
echo "</font>次";

結(jié)果:

用戶的瀏覽次數(shù)為:10次

遍歷會話命名空間

代碼:

<?php
require_once "Zend/Session/Namespace.php";
$myNamespace = new Zend_Session_Namespace('Myspace');
$myNamespace->webhost = "127.0.0.1";
$myNamespace->hostname = "localhost";
$myNamespace->user = "root";
$myNamespace->password = "123456";
$myNamespace->db_name = "test";
$myNamespace->db_type = "Sqlite";
foreach($myNamespace as $index=>$value){
  echo "命名空間myNamespace中的:".$index;
  echo "為".$value."<p>\n";
}

結(jié)果:

命名空間myNamespace中的:webhost為127.0.0.1
命名空間myNamespace中的:hostname為localhost
命名空間myNamespace中的:user為root
命名空間myNamespace中的:password為123456
命名空間myNamespace中的:db_name為test
命名空間myNamespace中的:db_type為Sqlite

點評:

它會把這個對象所對應(yīng)空間中的所有內(nèi)容遍歷出來。很神奇。

訪問會話命名空間

代碼:

<?php
require_once "Zend/Session/Namespace.php";
$login = new Zend_Session_Namespace('other');
$login->user = "Administrator";
if(isset($login->user)){
  echo "\$login->user已經(jīng)有值,其值為:";
  echo $login->user;
  unset($login->user);
}else{
  echo "\$login->user無值";
}
echo "<p>";
if(isset($login->pass)){
  echo "\$login->pass已經(jīng)有值,其值為:";
  echo $login->pass;
  unset($login->pass);
}else{
  echo "\$login->pass無值";
}
foreach($login as $index=>$value){
  echo "命名空間login中的:".$index."為".$value."<p>\n";
}

結(jié)果:

$login->user已經(jīng)有值,其值為:Administrator
$login->pass無值

會話的高級應(yīng)用

開啟會話,有兩種方法

一、使用Zend_Session::start()開啟會話

二、new Zend_Session_Namespace()

鎖定會話命名空間

代碼:

<?php
require_once "Zend/Session/Namespace.php";
$test = new Zend_Session_Namespace('test');
$test->name = "玉皇大帝";
$test->sex = "男";
$test->lock();
if($test->isLocked()){
  echo "會話\$test已經(jīng)鎖定!<p>";
  echo "命名空間\$test中的成員name的值為:";
  echo $test->name;
}else{
  echo "會話\$test已經(jīng)解鎖!";
}
echo "<p>";
$test->unLock();
if($test->isLocked()){
  echo "會話\$test已經(jīng)鎖定!<p>";
  echo "命名空間\$test中的成員name的值為:";
  echo $test->name;
}else{
  echo "會話\$test已經(jīng)解鎖!";
}

結(jié)果:

會話$test已經(jīng)鎖定!

命名空間$test中的成員name的值為:玉皇大帝

會話$test已經(jīng)解鎖!

點評:

由此可見,鎖定并不影響結(jié)果的輸出。

分析源代碼

public function lock()
{
    self::$_namespaceLocks[$this->_namespace] = true;
}
/**
* unlock() - unmark a session/namespace to enable read & write
*
* @return void
*/
public function unlock()
{
    unset(self::$_namespaceLocks[$this->_namespace]);
}
/**
* unlockAll() - unmark all session/namespaces to enable read & write
*
* @return void
*/
public static function unlockAll()
{
    self::$_namespaceLocks = array();
}
/**
* isLocked() - return lock status, true if, and only if, read-only
*
* @return bool
*/
public function isLocked()
{
    return isset(self::$_namespaceLocks[$this->_namespace]);
}

可知,它只是改變了參數(shù)而已。

為會話設(shè)置生命周期

setExpirationSeconds()方法與setExpirationHops()兩種方法來設(shè)置。

代碼:

<?php
require_once "Zend/Session/Namespace.php";
$s = new Zend_Session_Namespace('temp');
$s->a = "蘋果";
$s->p = "梨";
$s->o = "桔子";
$s->setExpirationSeconds(60);
$s->setExpirationHops(2,'a');
$s->setExpirationHops(3,'p');
echo "已經(jīng)為命名空間\$s設(shè)置生命期<p>";

設(shè)置生命期代碼,其實它針對的是命名空間來設(shè)置的。

測試代碼:

<?php
require_once "Zend/Session/Namespace.php";
$b = new Zend_Session_Namespace('temp');
echo "\$b->a內(nèi)容為:".$b->a;
echo "<p>";
echo "\$b->p內(nèi)容為:".$b->p;

先執(zhí)行設(shè)置生命期代碼,在執(zhí)行測試代碼會看到效果。

第一次:
$b->a內(nèi)容為:蘋果
$b->p內(nèi)容為:梨
第二次:
$b->a內(nèi)容為:蘋果
$b->p內(nèi)容為:梨
第三次:
$b->a內(nèi)容為:
$b->p內(nèi)容為:梨
第四次:
$b->a內(nèi)容為:
$b->p內(nèi)容為:

點評:刷新兩次之后,就會有消失。之后陸續(xù)消失。超過60秒效果相同。

分析源代碼,

public function setExpirationSeconds($seconds, $variables = null)
{
    if (parent::$_writable === false) {
      /**
       * @see Zend_Session_Exception
       */
      require_once 'Zend/Session/Exception.php';
      throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG);
    }
    if ($seconds <= 0) {
      /**
       * @see Zend_Session_Exception
       */
      require_once 'Zend/Session/Exception.php';
      throw new Zend_Session_Exception('Seconds must be positive.');
    }
    if ($variables === null) {
      // apply expiration to entire namespace
      $_SESSION['__ZF'][$this->_namespace]['ENT'] = time() + $seconds;
    } else {
      if (is_string($variables)) {
        $variables = array($variables);
      }
      foreach ($variables as $variable) {
        if (!empty($variable)) {
          $_SESSION['__ZF'][$this->_namespace]['ENVT'][$variable] = time() + $seconds;
        }
      }
    }
}

其實它還是基于PHP原始的Session來實現(xiàn)的。只是擴展了部分功能。

public function setExpirationHops($hops, $variables = null, $hopCountOnUsageOnly = false)
{
    if (parent::$_writable === false) {
      /**
       * @see Zend_Session_Exception
       */
      require_once 'Zend/Session/Exception.php';
      throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG);
    }
    if ($hops <= 0) {
      /**
       * @see Zend_Session_Exception
       */
      require_once 'Zend/Session/Exception.php';
      throw new Zend_Session_Exception('Hops must be positive number.');
    }
    if ($variables === null) {
      // apply expiration to entire namespace
      if ($hopCountOnUsageOnly === false) {
        $_SESSION['__ZF'][$this->_namespace]['ENGH'] = $hops;
      } else {
        $_SESSION['__ZF'][$this->_namespace]['ENNH'] = $hops;
      }
    } else {
      if (is_string($variables)) {
        $variables = array($variables);
      }
      foreach ($variables as $variable) {
        if (!empty($variable)) {
          if ($hopCountOnUsageOnly === false) {
            $_SESSION['__ZF'][$this->_namespace]['ENVGH'][$variable] = $hops;
          } else {
            $_SESSION['__ZF'][$this->_namespace]['ENVNH'][$variable] = $hops;
          }
        }
      }
    }
}

處理放在了構(gòu)造函數(shù)中。

更多關(guān)于zend相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Zend FrameWork框架入門教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《Yii框架入門及常用技巧總結(jié)》、《ThinkPHP入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家基于Zend Framework框架的PHP程序設(shè)計有所幫助。

相關(guān)文章

  • PHP如何初始化PDO及原始SQL語句操作

    PHP如何初始化PDO及原始SQL語句操作

    PDO 已經(jīng)是 PHP 中操作數(shù)據(jù)庫事實上的標準。包括現(xiàn)在的框架和各種類庫,都是以 PDO 作為數(shù)據(jù)庫的連接方式。基本上只有我們自己在寫簡單的測試代碼或者小的功能時會使用 mysqli 來操作數(shù)據(jù)庫。注意,普通的 mysql 擴展已經(jīng)過時了哦!
    2021-06-06
  • PHP與Web頁面交互例子的實現(xiàn)

    PHP與Web頁面交互例子的實現(xiàn)

    本文主要介紹了PHP?與?Web?頁面交互例子的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 使用CodeIgniter的類庫做圖片上傳

    使用CodeIgniter的類庫做圖片上傳

    CodeIgniter的文件上傳類允許文件被上傳。您可以設(shè)置指定上傳某類型的文件及指定大小的文件。這篇文章主要介紹了使用CodeIgniter的類庫做圖片上傳,需要的朋友可以參考下
    2014-06-06
  • Yii實現(xiàn)單用戶博客系統(tǒng)文章詳情頁插入評論表單的方法

    Yii實現(xiàn)單用戶博客系統(tǒng)文章詳情頁插入評論表單的方法

    這篇文章主要介紹了Yii實現(xiàn)單用戶博客系統(tǒng)文章詳情頁插入評論表單的方法,結(jié)合實例分析了Yii實現(xiàn)文章詳情頁評論表單功能的具體技巧,需要的朋友可以參考下
    2015-12-12
  • 有關(guān)PHP 中 config.m4 的探索

    有關(guān)PHP 中 config.m4 的探索

    這篇文章主要介紹了PHP 中 config.m4 的探索,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • php實現(xiàn)姓名根據(jù)首字母排序的類與方法(實例代碼)

    php實現(xiàn)姓名根據(jù)首字母排序的類與方法(實例代碼)

    這篇文章主要介紹了php實現(xiàn)姓名根據(jù)首字母排序的類與方法,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-05-05
  • typecho插件編寫教程(三):保存配置

    typecho插件編寫教程(三):保存配置

    這篇文章主要介紹了typecho插件編寫教程(三):保存配置,本文講解了完善方法、如何保存配置、使用需要注意的問題等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • 圖文詳解PHP中GC回收機制的利用

    圖文詳解PHP中GC回收機制的利用

    GC如其名就是垃圾收集,當然這里僅就內(nèi)存而言,下面這篇文章主要給大家介紹了關(guān)于PHP中GC回收機制利用的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • destoon實現(xiàn)公司新聞詳細頁添加評論功能的方法

    destoon實現(xiàn)公司新聞詳細頁添加評論功能的方法

    這篇文章主要介紹了destoon實現(xiàn)公司新聞詳細頁添加評論功能的方法,需要的朋友可以參考下
    2014-07-07
  • php格式文件打開的四種方法

    php格式文件打開的四種方法

    這篇文章主要介紹了php格式文件打開的四種方法,需要的朋友可以參考下
    2018-02-02

最新評論