Skip to content

Instantly share code, notes, and snippets.

@mpociot
Created June 28, 2013 12:14
Show Gist options
  • Save mpociot/5884259 to your computer and use it in GitHub Desktop.
Save mpociot/5884259 to your computer and use it in GitHub Desktop.
HTTP Request wrapper class
<?php
/**
* HTTP Request
* Wrapper Class
*
* @author Marcel Pociot
* @copyright Marcel Pociot 2009-2013
*/
namespace CR;
class Request{
private static $instance;
private $params = array();
/**
* Constructor
*
*/
public function __construct(){
$this->setParams();
}
protected function __clone(){}
/**
* Returns the current instance of the request wrapper
*
* @return CR_Request instance
*/
public static function getInstance(){
if(self::$instance == null) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Loads all Parameters from
* an array given
*
* @param array $settings
* @return boolean
*/
public function setParams($parameters = null){
if(is_array($parameters)){
$requestParameters = $parameters;
} else {
$requestParameters = $_REQUEST;
}
foreach ($requestParameters as $var => $value) {
$this->params[$var] = $value;
}
return true;
}
/**
* Returns the value
* from the given variable
*
* @param string $var
* @return mixed
*/
public function __get($var){
if( isset($this->params[$var]) ) {
$value = trim($this->params[$var]);
if ( !empty($value) OR $value === 0 OR $value === '0') {
return $this->params[$var];
}
}
return false;
}
/**
* Fill params with array
* @param array $params
*/
public function fill(Array $params){
$this->params = $params;
}
public function __set($var,$value) {
$this->params[$var] = $value;
}
/**
* Returns var as integer or 0 instead
* @param string variable
* @return int
*/
public function getInt($var){
if( key_exists($var, $this->params) ){
return intval($this->params[$var]);
}
return 0;
}
/**
* Returns var as postivie integer or 0 instead
* @param string variable
* @return int
*/
public function getPositiveInt($var){
if( key_exists($var, $this->params) ){
$intval = intval($this->params[$var]);
if( $intval < 0 ) {
$intval = 0;
}
}
return 0;
}
public function getFloat($var){
if( isset($this->params[$var]) )
{
return floatval($this->params[$var]);
}
return 0;
}
public function getString($var){
if( is_string($this->params[$var]) ) {
return $this->params[$var];
}
return false;
}
public function getTime($var){
if( strtotime($this->params[$var]) ) {
return strtotime($this->params[$var]);
}
return false;
}
public function getPassword($var,$minLength) {
if( strlen($this->params[$var]) >= $minLength ) {
return $this->params[$var];
}
return false;
}
public function getBool($var) {
if( isset($this->params[$var]) ) {
return '1';
}
return '0';
}
public function getArray($var){
if( is_array($this->params[$var]) ) {
return $this->params[$var];
} else {
return array();
}
}
public function getFromArray($arr, $key){
if( is_array($this->params[$arr]) AND array_key_exists($key, $this->params[$arr]) ) {
$value = trim($this->params[$arr][$key]);
if ( !empty($value)) {
return $value;
}
}
return false;
}
/**
* Get all request variables that contain
* a specific string!
*
* @param string $var
* @return array
*/
public function getLike($var) {
$return = array();
foreach ($this->params as $varey => $value) {
if( strstr($varey,$var) ) {
$return[$varey] = $value;
}
}
return $return;
}
public function isBase64($var){
$l = strlen($var);
if ($l) {
return $var[$l - 1] == '=' && preg_match('/[A-Za-z=\/\+]+/', $var);
}
return false;
}
public function checkEmail($var){
$email = strtolower($var);
if(!preg_match("/^([_[:alnum:]-]+)(\.[_[:alnum:]-]+)*@([[:alnum:]])([[:alnum:]\.-]+)([[:alnum:]])\.([[:alpha:]]{2,4})$/",$email)){
return false;
}else{
return $email;
}
}
public function decodeEmail($var){
if( $this->isBase64($var) ){
return base64_decode($var);
} else {
return $var;
}
}
public function getEmail($var){
if( !isset($this->params[$var]) ){
return false;
}
$email = strtolower($this->params[$var]);
if(!preg_match("/^([_[:alnum:]-]+)(\.[_[:alnum:]-]+)*@([[:alnum:]])([[:alnum:]\.-]+)([[:alnum:]])\.([[:alpha:]]{2,4})$/",$email)){
return false;
}else{
return $email;
}
}
public function getAz09($var){
if(preg_match("/([^0-9a-z])/",strtolower($this->params[$var]))){
return false;
}else{
return $this->params[$var];
}
}
/**
* Get an alpha numeric string
*
* @param string $var
* @return string
*/
public function getAlNum($var){
if(ctype_alnum(trim($this->params[$var]))){
return $this->params[$var];
}else{
return false;
}
}
public function hasUpload(){
if( !$_FILES ){
return false;
}
foreach( $_FILES as $var => $v ){
if( is_array( $v ) ) {
if( $v['tmp_name'][0] ){
return true;
}
}else{
if( $v['tmp_name'] ){
return true;
}
}
}
return false;
}
public function decr($var) {
$intval = intval($this->params[$var]) - 1;
if( $intval <= 0 ) {
$intval = 1;
}
return $intval;
}
public function incr($var) {
$var = $this->getInt($var);
if( $var == 0 ) {
$var = 1;
}
return $var+1;
}
public function toArray() {
return $this->params;
}
public function toObject() {
return (object)$this->params;
}
public function getDefault($field, $default = '') {
if (isset($this->params[$field])) {
return $this->params[$field];
} else {
return $default;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment