zoukankan      html  css  js  c++  java
  • cookie封装

    cookie类封装

    <?php
    
    /**
     * cookie的设置,读取,更新,删除
     */
    
    class CustomCookie{
        static private $_instance=null;
        private $expire = 0; //默认会话cookie
        private $path = '';
        private $domain = '';
        private $secure=false;
        private $httponly=false;
        /**
         * 构造函数完成cookie参数初始化工作
         * @param array $options [cookie相关选项]
         */
        private function __construct(array $options){
            $this->setOptions($options);
    
        }
    
        /**
         * 设置相关选项
         * @param array $options [cookie选项]
         */
        private function setOptions(array $options){
            if(isset($option['expire'])){
                $this->expire=(int)$options['expire'];
            }
            if(isset($option['path'])){
                $this->path=(int)$options['path'];
            }
            if(isset($option['domain'])){
                $this->domain=(int)$options['domain'];
            }
            if(isset($option['secure'])){
                $this->secure=(int)$options['secure'];
            }
            if(isset($option['httponly'])){
                $this->httponly=(int)$options['httponly'];
            }
    
            return $this;
        }
        /**
         * 单例模式
         * @param  array  $options [cookie相关选项]
         * @return [object] [对象实例]
         */
        public static function getInstance(array $options){
            if(is_null(self::$_instance)){
                $class=__CLASS__;
                self::$_instance = new $class($options);
            }
            return self::$_instance;
        }
    
        /**
         * 设置cookie
         * @param [type] $name    [description]
         * @param [type] $value   [description]
         * @param array  $options [description]
         */
        public function set($name,$value, $options=array()){
            if(is_array($options)&&count($options)>0){
                $this->setOptions($options);
            }
            if(is_array($value) || is_object($value)){
                $value = json_encode($value,JSON_FORCE_OBJECT);
            }
            if($options['expire']){
                $expire = $options['expire'];
            }else{
                $expire = $this->expire;
            }
    
            setcookie($name,$value,$expire,$this->path,$this->domain,$this->secure,$this->httponly);
        }
    
        /**
         * 得到指定的cookie
         * @param  [type] $name [description]
         * @return [mixed]       [返回null或者对象或者标量类型]
         */
        public function get($name){
            if(isset($_COOKIE[$name])){
                return substr($_COOKIE[$name],0,1)=='{'?json_decode($_COOKIE[$name]) : $_COOKIE[$name];
            }else{
                return null;
            }
        }
    
        /**
         *删除cookie
         */
        
        public function delete($name,$options=array()){
            if(is_array($options) && count($options)>0){
                $this->setOptions($options);
            }
            if(isset($_COOKIE[$name])){
                setcookie($name,'',time()-1,$this->path,$this->domain,$this->secure,$this->httponly);
            }
        }
    
        /**
         * 删除所有cookie
         */
        public function deleteAll($options = array()){
            if(is_array($options) && count($options)>0){
                $this->setOptions($options);
            }
            if(!empty($_COOKIE)){
                foreach($_COOKIE as $name=>$value){
                    setcookie($name,'',time()-1,$this->path,$this->domain,$this->secure,$this->httponly);
                    unset($_COOKIE[$name]);
                }
            }
        }
    
    
    }
    
    
    $cookie = CustomCookie::getInstance(array());
    // var_dump($cookie);
    
    
    // $cookie->set('aa',111,array());
    // $cookie->set('bb',222,array());
    // $cookie->set('cc',333,$options['expire']=time()+3600);
    
    $options=array(
        'expire'=>time() + 3600,
    );
    
    $cookie->set('cc',333,$options);
    
    
    
    
    var_dump($cookie->get('cc'));
  • 相关阅读:
    【C语言】学习笔记5——指针(1)
    【C语言】学习笔记4——数组
    【leetcode】Contest98
    【Python】从0开始写爬虫——豆瓣电影
    C# WPF 文件复制,相对路径
    WPF DataGrid多表头/列头,多行头,合并单元格,一列占据多行
    WPF Image Source 设置相对路径图片
    WPF Blend 一个动画结束后另一个动画开始执行(一个一个执行)
    WPF 操作XML 读写
    WPF 选择电脑文件显示路径,弹出资源管理器,打开文件
  • 原文地址:https://www.cnblogs.com/yangzailu/p/11359135.html
Copyright © 2011-2022 走看看