亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 php教程 PHP開發(fā) Zend Framework入門教學(xué)之Zend_Session會(huì)話操作詳解

Zend Framework入門教學(xué)之Zend_Session會(huì)話操作詳解

Jan 05, 2017 am 10:37 AM

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

會(huì)話命名空間

實(shí)現(xiàn)會(huì)話

代碼:

<?php
require_once "Zend/Session/Namespace.php";
$myNamespace = new Zend_Session_Namespace(&#39;Myspace&#39;);
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次

遍歷會(huì)話命名空間

代碼:

<?php
require_once "Zend/Session/Namespace.php";
$myNamespace = new Zend_Session_Namespace(&#39;Myspace&#39;);
$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

點(diǎn)評:

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

訪問會(huì)話命名空間

代碼:

<?php
require_once "Zend/Session/Namespace.php";
$login = new Zend_Session_Namespace(&#39;other&#39;);
$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無值

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

開啟會(huì)話,有兩種方法

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

二、new Zend_Session_Namespace()

鎖定會(huì)話命名空間

代碼:

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

結(jié)果:

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

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

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

點(diǎn)評:

由此可見,鎖定并不影響結(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ù)而已。

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

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

代碼:

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

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

測試代碼:

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

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

第一次:
$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)容為:

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

分析源代碼,

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

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

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

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

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

更多Zend Framework入門教程之Zend_Session會(huì)話操作詳解相關(guān)文章請關(guān)注PHP中文網(wǎng)!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72