更一步简化逻辑判断分支
functioncookie($name='',$value='',$option=null){
if($option不为空){
$option参数分别为整型、字符串、数组代码段
$option数组合并到$config数组中去
}
if($name为空null){
$_COOKIE为空返回null
$prefix不为空删除$prefix的cookie
}elseif($name为空字符串){
//获取全部的cookie
}
$name为某个值
取值
if($value为空字符串){
取$name的值
}else{
if(is_null($value)){
//删除$name的cookie
}else{
设置cookie
}
returnnull;
}
由上面的逻辑判断if语句可以看出
根据$name=''空字符串(获取全部cookie),
$name=空null, (删除$prefix的cookie)
$name='某个值'(取值|设置值){
$value=''空字符串(取值),
$value=空null(删除$name的cookie),
$value='某个值'(设置值)}
$option 参数 分别为整型、字符串()、数组 三种情况进行设计。
附上Cookie函数(源代码)
/**
*Cookie设置、获取、删除
*@paramstring$namecookie名称
*@parammixed$valuecookie值
*@parammixed$optioncookie参数
*@returnmixed
*/
functioncookie($name='',$value='',$option=null){
//默认设置
$config=array(
'prefix'=>C('COOKIE_PREFIX'),//cookie名称前缀
'expire'=>C('COOKIE_EXPIRE'),//cookie保存时间
'path'=>C('COOKIE_PATH'),//cookie保存路径
'domain'=>C('COOKIE_DOMAIN'),//cookie有效域名
'secure'=>C('COOKIE_SECURE'),//cookie启用安全传输
'httponly'=>C('COOKIE_HTTPONLY'),//httponly设置
);
//参数设置(会覆盖黙认设置)
if(!is_null($option)){
if(is_numeric($option))
$option=array('expire'=>$option);
elseif(is_string($option))
parse_str($option,$option);
$config=array_merge($config,array_change_key_case($option));
}
if(!empty($config['httponly'])){
ini_set("session.cookie_httponly",1);
}
//清除指定前缀的所有cookie
if(is_null($name)){
if(empty($_COOKIE))
returnnull;
//要删除的cookie前缀,不指定则删除config设置的指定前缀
$prefix=empty($value)?$config['prefix']:$value;
if(!empty($prefix)){//如果前缀为空字符串将不作处理直接返回
foreach($_COOKIEas$key=>$val){
if(0===stripos($key,$prefix)){
setcookie($key,'',time()-3600,$config['path'],
$config['domain'],$config['secure'],$config['httponly']);
unset($_COOKIE[$key]);
}
}
}
returnnull;
}elseif(''===$name){
//获取全部的cookie
return$_COOKIE;
}
$name=$config['prefix'].str_replace('.','_',$name);
if(''===$value){
if(isset($_COOKIE[$name])){
$value=$_COOKIE[$name];
if(0===strpos($value,'think:')){
$value=substr($value,6);
returnarray_map('urldecode',
json_decode(MAGIC_QUOTES_GPC?stripslashes($value):$value,true));
}else{
return$value;
}
}else{
returnnull;
}
}else{
if(is_null($value)){
setcookie($name,'',time()-3600,$config['path'],
$config['domain'],$config['secure'],$config['httponly']);
unset($_COOKIE[$name]);//删除指定cookie
}else{
//设置cookie
if(is_array($value)){
$value='think:'.json_encode(array_map('urlencode',$value));
}
$expire=!empty($config['expire'])?time()+intval($config['expire']):0;
setcookie($name,$value,$expire,$config['path'],
$config['domain'],$config['secure'],$config['httponly']);
$_COOKIE[$name]=$value;
}
}
returnnull;
}