PHP的静态变量需要集中管理,比如一些系统标识或者类型标识。我的一个想法是用类型类来管理。
一个类型基类:
<?php
/**
* @author jixiaolong
* @todo 类型基类
*
*/
class TypeBase {
function __construct() {
}
/**
*
*/
function __destruct() {
}
//modify by jixiaolong 2013/4/5
public static function getTypeNameById($type_id){
$name = '';
$list = self::toArray();
if (array_key_exists($type_id, $list)){
$name = $list[$type_id];
}
else{
$name = '未定义';
}
return $name;
}
//add by jixiaolong 2013/4/5
public static function toArray(){
$data = array();
return $data;
}
}
?>
扩展出的一个参数类型类:
<?php
/**
* @author jixiaolong
* @todo 参数类型
*
*/
require_once 'TypeBase.cls.php';
class TypeParam extends TypeBase {
const TYPE_INT = 1;
const TYPE_NULL = 2;
const TYPE_EXIST = 3;
const TYPE_ARRAY = 4;
const TYPE_STRING = 5;
const TYPE_DOUBLE = 6;
const TYPE_POSITIVE_INTEGER = 7;
const TYPE_BOOL = 8;
/**
*
*/
public function __construct() {
parent::__construct();
}
/**
*
*/
function __destruct() {
}
public static function toArray(){
$data = array(
self::TYPE_INT => 'int',
self::TYPE_NULL => 'null',
self::TYPE_EXIST => 'exist',
self::TYPE_ARRAY => 'array',
self::TYPE_STRING => 'string',
self::TYPE_DOUBLE => 'double',
self::TYPE_POSITIVE_INTEGER => 'positive integet',
self::TYPE_BOOL => 'bool',
);
return $data;
}
/**
* @author jixiaolong 2013-5-13上午09:22:35
* @todo 判断是否符合某种类型
* @param var $value 变量
* @param enum $type 类型
* @throws Exception
* @return boolean 是/否
*/
public static function isType(&$value,$type){
switch ($type){
case self::TYPE_ARRAY:
if (is_array($value)){
return true;
}
break;
case self::TYPE_DOUBLE:
if (is_double($value)){
return true;
}
break;
case self::TYPE_EXIST:
if (isset($value)){
return true;
}
break;
case self::TYPE_ARRAY:
if (is_array($value)){
return true;
}
break;
case self::TYPE_STRING:
if (is_string($value)){
return true;
}
break;
case self::TYPE_DOUBLE:
if (is_double($value)){
return true;
}
break;
case self::TYPE_POSITIVE_INTEGER:
if (is_int($value) && $value > 0){
return true;
}
break;
case self::TYPE_BOOL:
if (is_bool($value)){
return true;
}
break;
default:
throw new Exception('没有定义的数据类型', 0);
}
return false;
}
public static function getTypeNameById($type_id){
$name = '';
$list = self::toArray();
if (array_key_exists($type_id, $list)){
$name = $list[$type_id];
}
else{
$name = '未定义';
}
return $name;
}
}
?>