cookie操作封装

本文介绍了一个用于PHP的Cookie操作类封装,通过实例化该类可以设置、获取和删除Cookie,支持自定义Cookie的过期时间、路径、域名等属性。文章详细展示了如何使用这个封装类来管理网站的Cookie。
//cookie操作类封装
class CustomCookie{
    static private $_instance = null;
    private $expire = 0;
    private $path = '';
    private $domain = '';
    private $secure = false;
    private $httponly = false;
    /**
     * 构造函数完成cookie参数初始化工作
     * @param array $options
     */
    private function _construct(array $options = []){
        $this ->setOptions($options);
    }

    private function setOptions(array $options = []){
        if(isset($options['expire'])){
            $this->expire = (int)$options['expire'];
        }
        if(isset($options['path'])){
            $this->path = $options['path'];
        }
        if(isset($options['domain'])){
            $this->domain = $options['domain'];
        }
        if(isset($options['secure'])){
            $this->secure = (bool)$options['secure'];
        }
        if(isset($options['httponly'])){
            $this->httponly = (bool)$options['httponly'];
        }
        return $this;
    }
    /**
     * @param array $options Cookie相关选项
     * @return null
     */
    public static function getInstance(array $options = []){
        if(is_null(self::$_instance)){
            $class = __CLASS__;
            self::$_instance = new $class($options);
        }
        return self::$_instance;
    }

    /**
     * 设置cookie
     * @param $name
     * @param $value
     * @param array $options
     */
    public function set($name,$value,array $options = [])
    {
        if(is_array($options) && count($options)>0){
            $this->setOptions($options);
        }
        if(is_array($value) || is_object($value)){
            $value = json_encode($value,JSON_FORCE_OBJECT);//统一转换为对象
        }
       setcookie($name,$value,$this->expire,$this->path,$this->domain,$this->secure,$this->httponly);
    }

    /**
     * 获取cookie
     * @param $name
     * @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
     * @param $name
     * @param array $options
     */
    public function delete($name,$options = []){
        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);
            unset($_COOKIE[$name]);
        }
    }
}

$cookie = CustomCookie::getInstance();
//var_dump($cookie);
//$cookie->set('aa',123);
//$cookie->set('bb',12345);
//$cookie->set('cc',['name'=>'shan','age'=>18]);
//print_r($cookie->get('cc'));
$cookie->delete('aa');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值