wangaibo168 发表于 2014-4-11 17:40:48

扩展CI的核心类,增加一些常用功能

<?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';
    }

}
?>



Hex 发表于 2014-4-11 19:28:33

赞楼主的分享精神!

一叶扁舟 发表于 2014-4-12 08:02:37

多谢楼主分享
页: [1]
查看完整版本: 扩展CI的核心类,增加一些常用功能