<?php
|
/**
|
* PhalApi_Cookie COOKIE操作
|
*
|
* - 原生态COOKIE操作的简单封装
|
* - 注意,设置的COOKIE需要在下一次才能生效
|
*
|
* <br>使用示例:<br>
|
```
|
* //COOKIE
|
* DI()->cookie = 'PhalApi_Cookie';
|
*
|
* //设置COOKIE服务
|
* DI()->cookie->set('name', 'phalapi', $_SERVER['REQUEST_TIME'] + 600);
|
*
|
* //获取
|
* echo DI()->cookie->get('name'); //输出 phalapi
|
*
|
* //删除
|
* DI()->cookie->delete('name');
|
*
|
```
|
* @package PhalApi\Cookie
|
* @license http://www.phalapi.net/license GPL 协议
|
* @link http://www.phalapi.net/
|
* @author dogstar <chanzonghuang@gmail.com> 2015-04-11
|
*/
|
|
class PhalApi_Cookie {
|
|
/**
|
* COOKIE配置
|
*/
|
protected $config = array();
|
|
/**
|
* @param string $config['path'] 路径
|
* @param string $config['domain'] 域名
|
* @param boolean $config['secure'] 是否加密
|
* @param boolean $config['httponly'] 是否只HTTP协议
|
* @link http://php.net/manual/zh/function.setcookie.php
|
*/
|
public function __construct($config = array()) {
|
$this->config['path'] = isset($config['path']) ? $config['path'] : NULL;
|
$this->config['domain'] = isset($config['domain']) ? $config['domain'] : NULL;
|
$this->config['secure'] = isset($config['secure']) ? $config['secure'] : FALSE;
|
$this->config['httponly'] = isset($config['httponly']) ? $config['httponly'] : FALSE;
|
}
|
|
/**
|
* 获取COOKIE
|
*
|
* @param string $name 待获取的COOKIE名字
|
* @return string/NULL/array $name为NULL时返回整个$_COOKIE,存在时返回COOKIE,否则返回NULL
|
*/
|
public function get($name = NULL) {
|
if ($name === NULL) {
|
return $_COOKIE;
|
}
|
|
return isset($_COOKIE[$name]) ? $_COOKIE[$name] : NULL;
|
}
|
|
/**
|
* 设置COOKIE
|
*
|
* @param string $name 待设置的COOKIE名字
|
* @param string/int $value 建议COOKIE值为一些简单的字符串或数字,不推荐存放敏感数据
|
* @param int $expire 有效期的timestamp,为NULL时默认存放一个月
|
* @param boolean
|
*/
|
public function set($name, $value, $expire = NULL) {
|
if ($expire === NULL) {
|
$expire = $_SERVER['REQUEST_TIME'] + 2592000; //a month
|
}
|
|
return setcookie(
|
$name,
|
$value,
|
$expire,
|
$this->config['path'],
|
$this->config['domain'],
|
$this->config['secure'],
|
$this->config['httponly']
|
);
|
}
|
|
/**
|
* 删除COOKIE
|
*
|
* @param strint $name 待删除的COOKIE名字
|
* @param boolean
|
* @see PhalApi_Cookie::set()
|
*/
|
public function delete($name) {
|
return $this->set($name, '', 0);
|
}
|
|
/**
|
* 获取COOKIE的配置
|
*/
|
public function getConfig() {
|
return $this->config;
|
}
|
}
|