enum.php
/**
* 本类主要是实现枚举的功能
* @param unknown_type $base_class
* @param unknown_type $args
* @param unknown_type $codeArgs
*/
function enum($base_class, array $args,array $codeArgs){
$class_parts = preg_split('/\s+/', $base_class);
$base_class_name = array_shift($class_parts);
$enums = array();
$array=null;
$arrayFlip = null;
foreach ($args as $k => $enum) {
$array .= '\''.$k.'\' => \''.$codeArgs[$k].'\' ,';
$arrayFlip .= '\''.$enum.'\' => \''.$k.'\' ,';
if(is_integer($k)){
$valuestr = 'protected $value = '. $k .' ;';
}else{
$valuestr = 'protected $value = \''. $k . '\';';
}
$static_method = 'public static function ' . $enum .
'() { return ' . $base_class_name.'_'.$enum . '::instance(); }';
$enums[$static_method] = '
class ' . $base_class_name.'_'.$enum . ' extends ' . $base_class_name . '{
private static $instance = null;
'.$valuestr.'private function __construct() {}
private function __clone() {}
public function getLabel() {return \''.$codeArgs[$k] .'\'; }
public static function instance() {
if (self::$instance === null) { self::$instance = new self(); }
return self::$instance;
}
}';
}
$base_class_declaration = sprintf('
abstract class %s {
protected $value = null;
%s
public static function iterator() { return %sIterator::instance(); }
public function value() { return $this->value; }
public function __toString() { return (string) $this->value; }
public function compare($code) {return (string)$code === (string)$this->value; }
public static function compareNull($code) {return $code== "-1"; }
public static function toArray() { return array(%s); }
public static function toArrayforkey() { return array_flip(array(%s)); }
public static function toArrayflipforkey() { return array(%s); }
public static function toLabel($code) { $a=array(%s); if($code === "" ){return "" ; }else{ return $a[$code];} }
public static function toArrayMerge($fdarray = null) {if($fdarray == null)
{return array("-1"=>"请选择")+array(%s);}else{if(is_array($fdarray))
{return $fdarray+array(%s);}else{return array("-1"=>$fdarray)+array(%s);}}}
};',
$base_class,
implode(PHP_EOL, array_keys($enums)),
$base_class_name,
$array,$arrayFlip,$arrayFlip,$array,$array,$array,$array
);
$iterator_declaration = sprintf('
class %sIterator implements Iterator {
private static $instance = null;
private $values = array(\'%s\');
private function __construct() {}
private function __clone() {}
public static function instance() {
if (self::$instance === null) { self::$instance = new self(); }
return self::$instance;
}
public function current() {
$value = current($this->values);
if ($value === false) { return false; }
return call_user_func(array(\'%s\', $value));
}
public function key() { return key($this->values); }
public function next() {
next($this->values);
return $this->current();
}
public function rewind() { return reset($this->values); }
public function valid() { return (bool) $this->current(); }
};',
$base_class_name,
implode('\',\'', $args),
$base_class_name);
eval($base_class_declaration);
eval($iterator_declaration);
eval(implode(PHP_EOL, $enums));
}
code.php
<?php enum('SQ_isDelete',array(0=>'notDelete',1=>'deleted'),array(0=>'未删除',1=>'已删除' )); enum('SQ_sex',array(1=>'male',2=>'female'),array(1=>'男',2=>'女' )); enum('SQ_areaLevel',array(1=>'provice',2=>'city',3=>'district'),array(1=>'省',2=>'市',3=>'区' )); enum('SQ_whiteFlg',array(0=>'no',1=>'yes'),array(0=>'不是白名单',1=>'是白名单' )); enum('SQ_propertyDiff',array(0=>'normal',1=>'sale'),array(0=>'普通属性',1=>'销售属性' )); enum('SQ_isMust',array(0=>'no',1=>'yes'),array(0=>'否',1=>'是' )); enum('SQ_selectDiff',array(0=>'notShow',1=>'show'),array(0=>'前台不显示',1=>'前台显示' )); enum('SQ_isAllowAlias',array(0=>'no',1=>'yes'),array(0=>'不允许',1=>'允许' )); enum('SQ_viewDiff',array(0=>'words',1=>'picture'),array(0=>'文字',1=>'图片' )); enum('SQ_state',array(1=>'shopOpen',2=>'shopClose'),array(1=>'开店',2=>'闭店' )); enum('SQ_filePath',array(1=>'goods',2=>'shop',3=>'market',4=>'goodssort',5=>'shopsort',6=>'member',7=>'home',8=>'advert'),array(1=>'goods',2=>'shop',3=>'market',4=>'goodssort',5=>'shopsort',6=>'member',7=>'home',8=>'advert' )); enum('SQ_leaf',array(0=>'notLeaf',1=>'isLeaf'),array(0=>'否',1=>'是' )); enum('SQ_shopLevel',array(1=>'firstLevel',2=>'secondLevel'),array(1=>'一级',2=>'二级' )); enum('SQ_goodsLevel',array(1=>'firstLevel',2=>'secondLevel',3=>'thirdLevel'),array(1=>'一级',2=>'二级',3=>'三级' )); enum('SQ_memberState',array(0=>'memberOpen',1=>'memberClose'),array(0=>'停用',1=>'启用' )); enum('SQ_activationState',array(0=>'activate',1=>'noactivate'),array(0=>'未激活',1=>'已激活' )); enum('SQ_son',array(1=>'need',2=>'supply'),array(1=>'需求方',2=>'供应方' )); enum('SQ_amtype',array(1=>'announcement',2=>'important'),array(1=>'公告',2=>'重要' )); enum('SQ_oddType',array(1=>'orderNum',2=>'deliveryNum'),array(1=>'订单号',2=>'发货单号' )); enum('SQ_activitytype',array(1=>'group',2=>'flash'),array(1=>'团购',2=>'闪购' )); enum('SQ_judgetype',array(0=>'badreputation',1=>'goodreputation'),array(0=>'差评',1=>'好评' )); enum('SQ_optenstate',array(0=>'unopened',1=>'opened'),array(0=>'未公开',1=>'已公开' )); enum('SQ_replystate',array(0=>'unreturned',1=>'returned'),array(0=>'未回复',1=>'已回复' )); enum('SQ_activitystate',array(1=>'noreview',2=>'reviewing',3=>'notpass',4=>'pass',5=>'onshelf',6=>'offshelf'),array(1=>'未审核',2=>'审核中',3=>'审核未通过',4=>'审核通过',5=>'已上架',6=>'已下架' )); enum('SQ_paymentmethod',array(0=>'online',1=>'cash'),array(0=>'网上付款',1=>'货到付款' )); enum('SQ_adtype',array(1=>'rollingadvertising',2=>'recommend',3=>'brandstreet'),array(1=>'超市滚动广告位',2=>'超市精品推荐',3=>'品牌街头部广告' )); enum('SQ_roleid',array(1=>'shop',2=>'market',3=>'station',4=>'delivery'),array(1=>'品牌店',2=>'超市',3=>'工作站',4=>'配送员' )); enum('SQ_retype',array(1=>'new1',2=>'good'),array(1=>'新品',2=>'精品' )); enum('SQ_entityDistinguish',array(1=>'shop',2=>'market'),array(1=>'品牌店',2=>'超市' )); enum('SQ_orderstate',array(0=>'waitsend',1=>'sended',2=>'received',9=>'canceled'),array(0=>'待发货',1=>'已发货',2=>'已收货',9=>'已取消' )); enum('SQ_itemStatus',array(1=>'onsell',2=>'offsell'),array(1=>'上架',2=>'下架 ' )); enum('SQ_sellerorderstate',array(0=>'waitsend',1=>'packing',2=>'sended',3=>'received'),array(0=>'待发货',1=>'打包中',2=>'已发货',3=>'已收货' )); enum('SQ_memorderstate',array(0=>'waitsend',1=>'sended',2=>'received'),array(0=>'待发货',1=>'已发货',2=>'已收货' )); enum('SQ_stationorderstate',array(0=>'waitreceived',1=>'waitsend',2=>'sended',3=>'received'),array(0=>'待收中',1=>'待发货',2=>'已发货',3=>'已收货' )); enum('SQ_timetype',array(1=>'week',2=>'month',3=>'year'),array(1=>'周',2=>'月',3=>'年' ));
使用:
$param['optenstate'] = SQ_optenstate::opened()->value();
转载于:https://blog.51cto.com/6846041/1405928