PHPer として、OSC に参加してから現在に至るまで、私が共有したコードは 1 つの PHP 記事だけであることに今日気づきました。赤面して、プロジェクトで作成した共通クラスを共有しました。
GET data/POST data /Ordinary array。キーを介してフォーマットされたデータを返します http://www.du52.com/text.php?id=581
- include_once('Param.class.php');
- // GET/POSTデータの設定をシミュレートします
- $_REQUEST['int'] = '1243';
- $_REQUEST['str'] = 'hello';
- $_REQUEST['bool'] = 'true';
- $_REQUEST['arr'] = '1,2,3,4';
- $_REQUEST['json'] = json_encode(array( 'a' => 'a', 'b' => 'b'));
- $_REQUEST['date'] = date('Y-m-d H:i:s');
- // 単一データの読み取り
- var_dump(Param::getInt('int', 0));echo '
';
- var_dump(Param::getInt('unknown-int', -1));echo '
';
- var_dump(Param::getStr('str', 'default'));echo '
';
- var_dump(Param::getBool('bool', NULL));echo '
';
- var_dump(Param::getStrArray('arr', ',', NULL));echo '
';
- var_dump(Param::getJson('json' , NULL));echo '
';
- var_dump(Param::getTime('date', -1));echo '
';
- echo '
';
- //
- $fields = array();
- $fields[] = array('int', Param::$FIELD_TYPE_INT, 0);
- $fields のバッチを取得します[] = array('unknown-int', Param::$FIELD_TYPE_INT, -1);
- $fields[] = array('str', Param::$FIELD_TYPE_STR, 'default');
- $fields[] = array('bool', Param::$FIELD_TYPE_BOOL, 0);
- $fields[] = array('arr', Param::$FIELD_TYPE_STRARR, 0);
- $fields[] = array('json', Param: :$FIELD_TYPE_JSON, 0);
- $fields[] = array('date', Param::$FIELD_TYPE_TIME, -1);
- $data = Param::parse($fields);
- var_dump($data);
- echo '
';echo ' ';
- // 配列データを取得
- $source = array('int' => '1234', 'str' => 'hello ');
- var_dump(Param::getInt('int', -1));echo '
';
- var_dump(Param::getStr('str', 'default'));echo '
';
- ?>
コードをコピー
- int(1243)
- int(-1)
- string(5) "hello"
- bool(true)
- array(4) { [0]=> string(1) "1" [1]= > 文字列(1) "2" => 文字列(1) "3" => 配列(2) { ["a"]=>文字列(1) "a" ["b"]=> 文字列(1) "b" }
- int(1408603747)
-
-
- array(7) { ["int"]=> int(1243)未定義-int"]=> int(-1) ["str"]=> string(5) "hello" ["bool"]=> bool(true) ["arr"]=> array( 4) { [0]=> 文字列 (1) "1" => 文字列 (1) "3" => 1) "4" } ["json"]=> 配列(2) { ["a"]=> 文字列(1) "b" } ["日付"]=> int(1408603747) }
-
- int(1243)
- string(5) "こんにちは"
-
コードをコピーします
- /**
- * パラメータ管理
- *
- * @author wangaibo168@163.com
- * @charset utf-8
- */
- class Param {
- /**
- *デフォルトのコンストラクター
- */
- プライベート関数 __construct(){}
- /**
- * 生データを取得します
- * @param $name
- * @param null $def
- * @param null $arr
- * @return null
- */
- public static function getData($name,$def=null,$arr=null){
- if(is_null($name) || $name==='') return $def;
- $name = トリム($name) );
- $temp = is_array($arr)?$arr:$_REQUEST;
- if(array_key_exists($name,$temp)) return $temp[$name];
- return $def;
- }
- /**
- * 文字列データを取得します
- * @param $name
- * @param string $def
- * @param null $arr
- * @return string
- */
- public static function getStr($name,$def='',$arr=null){
- $value = self::getData($name,$def,$arr);
- return @strval( $value);
- }
- /**
- * 数値データを取得します
- * @param $name
- * @param int $def
- * @param null $arr
- * @return int
- */
- public static function getInt($name,$def=0,$arr=null){
- $value = self::getData($name,$def ,$arr);
- return @intval($value);
- }
- /**
- * ブール型データの取得
- * @param $name
- * @param bool $def
- * @param null $arr
- * @return bool
- */
- public static function getBool($name,$def=false,$arr=null){
- $value = self::getData($name,$def,$arr);
- if(is_string($value)){
- $value = strto lower($value);
- if($value=='true' || $value= ='1') true を返す;
- if($value=='false' || $value=='0') false を返す;
- }
- if(is_int($value)){
- if($value== 1) return true;
- if($value==0) return false;
- }
- if(is_object($value)){
- return $value!=null;
- }
- return $def;
- }
- /* *
- * 配列型データを取得します
- * @param $name
- * @param array $def
- * @param null $arr
- * @return array
- */
- public static function getArray($name,$def=array(),$arr=null){
- $value = self::getData($name,$def,$arr);
- if( !is_array($value)){
- $value = array($value);
- }
- return $value;
- }
- /**
- * JSON型データを取得
- * @param $name
- * @param array $def
- * @param null $arr
- * @return array
- */
- public static function getJson($name,$def=array (),$arr=null){
- $value = self::getStr($name,null,$arr);
- if($value==null) return $def;
- $value = @json_decode($value, true);
- if(is_array($value) && count($value)>0) return $value;
- return $def;
- }
-
- /**
- * 時刻の形式は 2013-12-02 11:00:11 で、タイムスタンプに変換されます
- * @param $name
- * @param int $def
- * @param null $arr
- * @return int
- */
- public static function getTime($name ,$def=0,$arr=null){
- $value = self::getStr($name,'',$arr);
- if(empty($value)) return $def;
- $value = trim( $value);
- if(preg_match('/^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})s+( [0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})$/',$value,$ret)){
- if(is_array($ret) && count($ret)==7){
- list($t,$y,$m,$d,$h,$mi,$s) = $ret;
- return mktime( $h,$mi,$s,$m,$d,$y);
- }else{
- return $def;
- }
- }
- if(preg_match('/^([0-9]{4}) -([0-9]{1,2})-([0-9]{1,2})$/',$value,$ret)){
- if(is_array($ret) && count($) ret)==4){
- list($t,$y,$m,$d) = $ret;
- return mktime(0,0,0,$m,$d,$y);
- }else{
- return $def;
- }
- }
- return $def;
- }
-
- /**
- * 時刻の形式は 2013-12-02 11:00:11 で、数値 (14 桁) に変換されます
- * @param $name
- * @param string $def
- * @param null $arr
- * @return bool |文字列
- */
- public static function getDate($name,$def='00000000000000',$arr=null){
- $ value = self::getTime($name,0,$arr);
- if($value>0){
- return date('YmdHis',$value);
- }
- return $def;
- }
-
- /**
- * 文字列の日付を標準の日付としてフォーマットします
- * @param $value
- * @param bool $full
- * @param string $def
- * @return string
- */
- public static function formatDate($value,$full=false,$def=''){
- if(empty($value)) return $def;
- $value = trim( $value);
- if(preg_match('/^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2 })([0-9]{2})([0-9]{2})$/',$value,$ret)){
- if(is_array($ret) && count($ret)== 7){
- list($t,$y,$m,$d,$h,$mi,$s) = $ret;
- if($y==0 || $m==0 || $d ==0) return $def;
- if(!$full && $h==0 && $mi==0 && $s==0){
- return "$y-$m-$d";
- }
- return "$y-$m-$d $h:$mi:$s";
- }else{
- return $def;
- }
- }
- }
-
- /**
- * 浮動小数点データを取得します
- * @param $name
- * @param int $def
- * @param null $arr
- * @return float
- */
- public static function getDouble ($name,$def=0,$arr=null){
- $value = self::getData($name,$def,$arr);
- return @doubleval($value);
- }
-
- /**
- * 文字列を取得して配列に変換します
- * @param $name
- * @param string $limit
- * @param array $def
- * @param null $arr
- * @return array
- */
- public static function getStrArray($name,$limit=',',$def=array(),$arr=null){
- $value = self::getStr($name,'',$ arr);
- if(empty($value)) return $def;
- $arr =explode($limit,$value);
- if(!is_array($arr)) return $def;
- $value = array() ;
- foreach($arr as $v){
- if(empty($v)) continue;
- $value[] = $v;
- }
- return $value;
- }
-
- /**
- * ネイティブデータを設定します
- * @param $name
- * @param $value
- */
- public static function setData($name,$value){
- if(empty($name)) return;
- $_GET[$name] = $value;
- $_POST[$name] = $value;
- $_REQUEST[ $name] = $value;
- }
-
- /**
- * 古いデータに基づいて新しいネイティブ データを設定します
- * @param $name
- * @param $oldName
- */
- public static function setDataByName($name,$oldName){
- if(empty($name) || empty($oldName)) return;
- $value = self::getData($oldName);
- self::setData($name,$value);
- }
-
- /**
- * @var string ネイティブ データ型
- */
- public static $ FIELD_TYPE_DATA = 'data';
-
- /**
- * @var 文字列数値データ型
- */
- public static $FIELD_TYPE_INT = 'int';
-
- /**
- * @var string 文字列データ型
- */
- public static $FIELD_TYPE_STR = 'str';
-
- /* *
- * @var 文字列浮動小数点データ型
- */
- public static $FIELD_TYPE_DOUBLE = 'double';
-
- /**
- * @var string ブールデータ型
- */
- public static $FIELD_TYPE_BOOL = 'bool';
-
- /**
- * @var string JSON データ型
- */
- public static $ FIELD_TYPE_JSON = 'json';
-
- /**
- * @var 文字列配列データ型
- */
- public static $FIELD_TYPE_ARRAY = 'array';
-
- /**
- * @var 文字列タイムスタンプ データ型
- */
- public static $FIELD_TYPE_TIME = 'time';
-
- /* *
- * @var string string 時間データ型
- */
- public static $FIELD_TYPE_DATE = 'date';
-
- /**
- * @var string string 配列データ型
- */
- public static $FIELD_TYPE_STRARR = 'strarr';
-
- /**
- * データフィールドに従ってデータをフォーマットします
- * @param $fields
- * @return array
- */
- public static 関数parse($fields){
- if(!is_array($fields) || count($fields)==0) return array();
- $data = array();
- foreach($fields as $field){
- if(!is_array($field) || count($field)!=3) 続行;
- list($name,$type,$def) = $field;
- if(empty($name) || empty($type)) 続行;
- $type = strto lower($type);
- if($type==self::$FIELD_TYPE_DATA){
- $value = self::getData($name,$def);
- } else if($type==self::$FIELD_TYPE_INT){
- $value = self::getInt($name,$def);
- }else if($type==self::$FIELD_TYPE_STR){
- $value = self::getStr($name,$def);
- }else if($type==self::$FIELD_TYPE_DOUBLE){
- $value = self::getDouble($name,$def);
- }else if($ type==self::$FIELD_TYPE_BOOL){
- $value = self::getBool($name,$def);
- }else if($type==self::$FIELD_TYPE_ARRAY){
- $value = self::getArray ($name,$def);
- }else if($type==self::$FIELD_TYPE_TIME){
- $value = self::getTime($name,$def);
- }else if($type==self::$FIELD_TYPE_DATE){
- $value = self::getDate($name,$def);
- }else if($type==self::$FIELD_TYPE_JSON){
- $value = self::getJson($name,$def);
- }else if($ type==self::$FIELD_TYPE_STRARR){
- $value = self::getStrArray($name,',',$def);
- }else{
- $value = $def;
- }
- $data[$name] = $value;
- }
- return $data;
- }
-
- /**
- * JSON データのフォーマット
- * @param $name
- * @param $fields
- * @param null $arr
- * @return array
- */
- public static function parseJSON($name,$fields,$arr=null){
- if(!is_array($fields) || count($fields)==0) return array();
- $data = array();
- $temp = self::getJson($name,null,$arr);
- if(!is_array($temp )) $temp = array();
- foreach($fields as $field){
- if(!is_array($field) || count($field)!=3) continue;
- list($name,$type, $def) = $field;
- if(empty($name) || empty($type)) continue;
- $type = strto lower($type);
- if($type==self::$FIELD_TYPE_DATA){
- $value = self::getData($name,$def,$temp);
- }else if($type==self::$FIELD_TYPE_INT){
- $value = self::getInt($name,$def,$ temp);
- }else if($type==self::$FIELD_TYPE_STR){
- $value = self::getStr($name,$def,$temp);
- }else if($type==self:: $FIELD_TYPE_DOUBLE){
- $value = self::getDouble($name,$def,$temp);
- }else if($type==self::$FIELD_TYPE_BOOL){
- $value = self::getBool($name) ,$def,$temp);
- }else if($type==self::$FIELD_TYPE_ARRAY){
- $value = self::getArray($name,$def,$temp);
- }else if($type ==self::$FIELD_TYPE_TIME){
- $value = self::getTime($name,$def,$temp);
- }else if($type==self::$FIELD_TYPE_DATE){
- $value = self: :getDate($name,$def,$temp);
- }else if($type==self::$FIELD_TYPE_JSON){
- $value = self::getJson($name,$def,$temp);
- } else if($type==self::$FIELD_TYPE_STRARR){
- $value = self::getStrArray($name,',',$def,$temp);
- }else{
- $value = $def;
- }
- $data[$name] = $value;
- }
- return $data;
- }
- }
- ?>
复制代码
|