//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');
cookie操作封装
最新推荐文章于 2024-08-15 15:07:59 发布
本文介绍了一个用于PHP的Cookie操作类封装,通过实例化该类可以设置、获取和删除Cookie,支持自定义Cookie的过期时间、路径、域名等属性。文章详细展示了如何使用这个封装类来管理网站的Cookie。

564

被折叠的 条评论
为什么被折叠?



