SpeedPHP Session扩展类

#1 starlight36

通过本类可以实现简洁快速的用户SESSION访问。
使用方法:

此扩展为标准形式的扩展,直接放在Extensions下即可。Session的读写方法支持path形式访问。例如,session中存储了以下PHP数组:

array('key1'=>array('key2'=>'value'))

那么spClass('spSession')->get('key1/key2')即可读取到值value。写入时采用put方法,访问方式类似。

源代码:

/**
* Session扩展类
*
* @author starlight36
*/
class spSession {
        private $session;

        function  __construct() {
                $this->session = &$_SESSION[$GLOBALS['G_SP']['sp_app_id']]['session'];
        }

        /**
         * 支持以path形式访问Session值
         * @param string $key
         * @return mixed
         */
        function get($key = NULL) {
                return $this->path_array($this->session, $key);
        }

        /**
         * 将数据存入SESSION, 支持path形式访问
         * @param string $key
         * @param mixed $value
         * @return bool
         */
        function put($key, $value) {
                $array =& $this->path_array($this->session, $key);
                $array = $value;
                return TRUE;
        }

        /**
         * Path形式访问数组
         * @param minxed &$array
         * @param string $path
         * @return mixed
         */
        private function &path_array(&$array, $path = NULL) {
                if(empty($path) || !is_array($array)) {
                        return $array;
                }else{
                        $arr_path = explode('/', $path);
                        $path = NULL;
                        foreach($arr_path as $v){
                                $path .= '[\''.addslashes($v).'\']';
                        }
                        eval('$value =& $array'.$path.';');
                        return $value;
                }
        }
}
/* End of this file */



下载:

spSession.rar

该贴已经同步到 starlight36的微博

2011-02-11 18:12:58

#2 jake

mark一下,另一个思路:魔术函数实现

class Variables
{
        public function __construct()
        {
                if(session_id() === "")
                {
                        session_start();
                }
        }
        public function __set($name,$value)
        {
                $_SESSION["Variables"][$name] = $value;
        }
        public function &__get($name)
        {
                return $_SESSION["Variables"][$name];
        }
        public function __isset($name)
        {
                return isset($_SESSION["Variables"][$name]);
        }
}
?>

2011-02-12 08:50:49

#3 jiayan41

谢谢分享,每次逛论坛都能有新收获,这个Session扩展类正是我需要的。 顶!

2011-02-12 10:23:09

#4 soseek

什么用的




看来

2011-02-15 15:30:18

#5 vsxp

数据类型……

2011-03-10 17:18:42

#6 wei4315786

看一下··················

2011-03-30 20:43:51

#7 chillm

不会用,讲详细点

2011-05-22 14:14:15

#8 hygzs

看看,学习一下

2011-08-31 15:52:47