用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3956|回复: 2
收起左侧

[核心代码 Core] 扩展CI的核心类,增加一些常用功能

[复制链接]
发表于 2014-4-11 17:40:48 | 显示全部楼层 |阅读模式
PHP复制代码
<?php
if(!defined('BASEPATH')) die('No Access');
 
/**
 * 扩展CI核心输入类
 *
 * 1. 增加获取全部POST,GET参数
 * 2. 增加判断提交方法GET,POST
 * 3. 将URL参数如/a/1/b/2/c/3这样的参数加入到GET中,方便获取
 *
 * 使用方法::::
 * 1. 设置 config.php subclass_prefix = APP 或 更改 本类前缀APP
 * 2. 文件名 APP_Input.php 可以根据需求更改
 * 3. 文件地址 /application/core/APP_Input.php
 *
 * @class APP_Input
 * @package core
 * @author wangaibo168@163.com
 * @link http://wwww.du52.com/text.php?id=549
 * @version 1.0.0
 */

class APP_Input extends CI_Input
{
 
    private static $urls = null;
 
    /**
     * 构造函数
     */

    public function __construct()
    {
        parent::__construct();
    }
 
    /**
     * 获取URL地址参数数组
     *
     * @return array|null
     */

    public function urls(){
        if(is_array(self::$urls)) return self::$urls;
        $CI = &get_instance();
        $urls = $CI->uri->ruri_to_assoc();
        if(!is_array($urls)) $urls = array();
        self::$urls = $urls;
        return self::$urls;
    }
 
    /**
     * 将URL地址参数数组合并到GET和REQUEST中
     */

    public function set_urls(){
        if(!is_array(self::$urls)){
            $this->urls();
            $_GET = array_merge(self::$urls,$_GET);
            $_REQUEST = array_merge(self::$urls,$_REQUEST);
        }
    }
 
    /**
     * 重写Input的GET方法
     *
     * @param null $index
     * @param bool $xss_clean
     * @return string
     */

    public function get($index, $xss_clean = FALSE)
    {
        $this->set_urls();
        return parent::get($index, $xss_clean);
    }
 
    /**
     * 重写Input的get_post方法
     *
     * @param string $index
     * @param bool $xss_clean
     * @return string
     */

    public function get_post($index, $xss_clean = FALSE)
    {
        $this->set_urls();
        return parent::get_post($index, $xss_clean);
    }
 
    /**
     * 获取所有POST数据
     *
     * @param bool $xss_clean 是否清理XSS威胁
     * @return array 所有POST数据
     */

    public function posts($xss_clean = FALSE)
    {
        if(!is_array($_POST)) return array();
        $result = array();
        foreach(array_keys($_POST) as $v)
        {
            $result[$v] = $this->post($v,$xss_clean);
        }
        return $result;
    }
 
    /**
     * 获取所有GET数据
     *
     * @param bool $xss_clean 是否清理XSS威胁
     * @return array 所有GET数据
     */

    public function gets($xss_clean = FALSE)
    {
        if(!is_array($_GET)) return array();
        $this->set_urls();
        $result = array();
        foreach(array_keys($_GET) as $v)
        {
            $result[$v] = $this->get($v,$xss_clean);
        }
        return $result;
    }
 
    /**
     * 获取所有请求数据
     *
     * @param bool $xss_clean 是否清除XSS威胁
     * @return array 所有请求数据
     */

    public function requests($xss_clean = FALSE)
    {
        if(!is_array($_REQUEST)) return array();
        $this->set_urls();
        $result = array();
        foreach(array_keys($_REQUEST) as $v)
        {
            $result[$v] = $this->get_post($v, $xss_clean);
        }
        return $result;
    }
 
    /**
     * 判断请求类型是否为POST
     *
     * @return bool
     */

    public function isPost()
    {
        return strtolower($this->server('REQUEST_METHOD')) === 'post';
    }
 
    /**
     * 判断请求类型是否为GET
     *
     * @return bool
     */

    public function isGet()
    {
        return strtolower($this->server('REQUEST_METHOD')) === 'get';
    }
 
}
?>
 
 
复制代码


评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

发表于 2014-4-11 19:28:33 | 显示全部楼层
赞楼主的分享精神!
发表于 2014-4-12 08:02:37 | 显示全部楼层
多谢楼主分享

本版积分规则