我是靠谱客的博主 笑点低曲奇,最近开发中收集的这篇文章主要介绍COOKIE操作类的封装,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

慕课学习-->PHP中的会话控制-->第二章 COOKIE的使用-->3-5Cookie操作类的封装

<?php
/**
* Cookie的设置、读取、更新、删除
*/
class CustomCookie{
static private $_instance=null;
private $expire=0;
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($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=$options['secure'];
}
if(isset($options['httponly'])){
$this->httponly=$options['httponly'];
}
}
/**
*单例模式
*@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 string $name cookie的名称
*@param mixed $value cookie的值
*@param array $options Cookie相关选项
*/
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 string $name Cookie名称
*@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 string $name cookie的名称
*@param array $options Cookie相关选项
*/
public function delete($name,array $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
*@param array $options Cookie相关选项
*/
public function deleteAll(array $options=[]){
if(is_array($options)&&count($options)>0){
$this->setOptions($options);
}
if(!empty($_COOKIE)){
echo "empty";
foreach ($_COOKIE as $name => $value) {
setcookie($name,'',time()-1,$this->path,$this->domain,$this->secure,$this->httponly);
unset($_COOKIE[$name]);
}
}
}
}
//实现
//$cookie=CustomCookie::getInstance();
//var_dump($cookie);
//$cookie->set('aa',111);
//$cookie->set('bb',222);
//$cookie->set('cc',333,['expire'=>time()+3600]);
//echo $cookie->get('aa');
//$cookie->set('userinfo',['username'=>'king','age'=>23]);
//var_dump($cookie->get('userinfo'));
//$cookie->delete("cc");
//$cookie->deleteAll();
?>


最后

以上就是笑点低曲奇为你收集整理的COOKIE操作类的封装的全部内容,希望文章能够帮你解决COOKIE操作类的封装所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部