[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/session/src/ -> lmbSession.class.php (source)

   1  <?php
   2  /*
   3   * Limb PHP Framework
   4   *
   5   * @link http://limb-project.com 
   6   * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
   7   * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
   8   */
   9  lmb_require('limb/core/src/lmbSerializable.class.php');
  10  
  11  
  12  /**

  13   * Wrapper class for global $_SESSION variable

  14   *

  15   * @see lmbWebAppTools :: getSession()

  16   * @version $Id: lmbSession.class.php 5945 2007-06-06 08:31:43Z pachanga $

  17   * @package session
  18   */
  19  class lmbSession
  20  {
  21    /**

  22     * @var array variables names that were changed. Used for testing purposes mostly.

  23     */
  24    protected $touched_names = array();
  25  
  26    /**

  27     * Starts session and installs driver

  28     * @param object Concrete session driver

  29     */
  30    function start($storage = null)
  31    {
  32      if($storage)
  33        $storage->install();
  34      session_start();
  35    }
  36  
  37    /**

  38     * Register a variable in session and returns a reference to it.

  39     * @param string variable name

  40     */
  41    function & registerReference($name)
  42    {
  43      if(!isset($_SESSION[$name]))
  44        $_SESSION[$name] = '';
  45  
  46      $this->touched_names[$name] = true;
  47      return $_SESSION[$name];
  48    }
  49  
  50    /**

  51     * Returns variable value from session

  52     * @param string variable name

  53     * @param mixed value that should be returned if variable is not registered in session yet

  54     * @return mixed

  55     */
  56    function get($name, $empty_value = null)
  57    {
  58      if(!isset($_SESSION[$name]))
  59        return $empty_value;
  60  
  61      if(is_object($_SESSION[$name]) && $_SESSION[$name] instanceof lmbSerializable)
  62        return $_SESSION[$name]->getSubject();
  63      else
  64        return $_SESSION[$name];
  65    }
  66  
  67    /**

  68     * Sets variable into session

  69     * Automatically wraps objects with {@link lmbSerializable}

  70     * that helps to prevent <b>"class is not defined"</b> error while restoring session

  71     * @param string variable name

  72     * @param mixed value

  73     * @return void

  74     */
  75    function set($name, $value)
  76    {
  77      if(is_object($value))
  78        $_SESSION[$name] = new lmbSerializable($value);
  79      else
  80        $_SESSION[$name] = $value;
  81  
  82      $this->touched_names[$name] = true;
  83    }
  84  
  85    /**

  86     * Clears session

  87     * @return void

  88     */
  89    function reset()
  90    {
  91      $_SESSION = array();
  92    }
  93  
  94    /**

  95     * Returns TRUE if session has such variable

  96     * @param string variable name

  97     * @return boolean

  98     */
  99    function exists($name)
 100    {
 101      return isset($_SESSION[$name]);
 102    }
 103  
 104    /**

 105     * Removes variable from session

 106     * @param string variable name

 107     * @return void

 108     */
 109    function destroy($name)
 110    {
 111      if(isset($_SESSION[$name]))
 112        unset($_SESSION[$name]);
 113    }
 114  
 115    /**

 116     * Alias for destroy() method

 117     * @see destroy()

 118     * @return void

 119     */
 120    function remove($name)
 121    {
 122      $this->destroy($name);
 123    }
 124  
 125    /**

 126     * Returns session data

 127     * @return array

 128     */
 129    function export()
 130    {
 131      return $_SESSION;
 132    }
 133  
 134    /**

 135     * Removed all variables that were changed

 136     * @see $touched_names

 137     * @return void

 138     */
 139    function destroyTouched()
 140    {
 141      foreach(array_keys($this->touched_names) as $name)
 142        $this->destroy($name);
 143    }
 144  
 145    /**

 146     * Dumps session data (for debugging purposes mostly)

 147     * @return mixed

 148     */
 149    function dump()
 150    {
 151      $str = "";
 152      if(!isset($_SESSION) || !is_array($_SESSION))
 153        return $str;
 154  
 155      foreach($_SESSION as $key => $value)
 156      {
 157        $str .= "$key : ";
 158        if(is_array($value))
 159          $str .= 'ARRAY[' . sizeof($value) . ']';
 160        elseif(is_object($value))
 161          $str .= 'OBJECT(' . get_class($value) . ')';
 162        else
 163          $str .= strtoupper(gettype($value));
 164        $str .= "\n";
 165      }
 166      return $str;
 167    }
 168  }
 169  ?>


Generated: Tue Oct 7 05:02:03 2008 Cross-referenced by PHPXref 0.7