枚举功能类

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();

枚举功能类,布布扣,bubuko.com

时间: 2024-10-09 15:01:29

枚举功能类的相关文章

mybatis自定义枚举转换类

mybatis提供了 EnumTypeHandler和EnumOrdinalTypeHandler完成枚举类型的转换,两者的功能已经基本满足了日常的使用.但是可能有这 样的需求:由于某种原因,我们不想使用枚举的name和ordinal作为数据存储字段.mybatis的自定义转换类出现了. 示例 使用一段代码,将枚举类EnumStatus中的code属性存储到数据库对应字段statusCustom. 自定义转换类 package com.sg.util.typehandler; import ja

Swift的闭包,枚举,类和结构体

闭包(Closures) 使用过其它语言的应该对代码块并不陌生,Swift中的闭包与C,OC中的Block相似. 表示自包括的函数代码块.能够在代码中传递和使用. 而且能够捕获和存储上下文的变量以及常量值,Swift会为你进行捕获相关的内存操作. 上一篇文章提到的函数.也是一种特殊的闭包.详细在: 全局函数是有名字可是不会捕获不论什么值的闭包. 嵌套函数是有名字且能够捕获域内值的闭包. 闭包表达式是利用轻量级语法写的能够捕获上下文值的匿名闭包. 基本的语法 表达式的一般语法以及简化过程 上面罗列

java对枚举的类反射使用

import java.lang.reflect.Method; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.lang3.reflect.MethodUtils; /** * * <strong>功能:</strong>枚举使用工具 * <strong>作者:</strong>Gary Huang * <strong>日期:<

php实现图片缩放功能类

http://www.poluoluo.com/jzxy/201312/255447.html <?php /** * Images类是一个图片处理类 * @package application.controllers * @since 1.0 */ class Images { /** * 缩放图片 * @param $source原图片 * @param $newfile新图片 * @param $pre缩放比例 */ public function thumn($source,$pre,

OC基础--结构体 枚举做类成员属性

结构体  枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期  毕业日期  --  结构体 代码示例: 声明文件 Student.h: #import <Foundation/Foundation.h> typedef struct { int year; int month; int day; } Date; typedef enum { kGenderGirl = 0, kGenderBoy = 1, kGenderChunGe = 2 } Gender; @inter

【socket】Socket的三个功能类TCPClient、TCPListener 和 UDPClient

Socket的三个功能类TCPClient.TCPListener 和 UDPClient (转) 应用程序可以通过 TCPClient.TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务.这些协议类建立在 System.Net.Sockets.Socket 类的基础之上,负责数据传送的细节.(也就是说TCPClient.TCPListener 和 UDPClient 类是用来简化Socket) TcpClient 和 TcpLi

功能类控件

驰骋工作流引擎将出发各种事件的控件称之为功能类控件,驰骋表单设计器中有控件分类:按钮,鼠标.选择,超连接. 按钮 表单上面的按钮对象,可以处理事件内容. 特别说明:ccBPM所有的事件内容的处理方式都是一致的,目前所涉及的事件有,表单事件.按钮事件.流程事件. 1.总体说明 每个按钮有自己的按钮类型,使用自定义按钮类型. 属性 说明 按钮事件类型 事件类型决定按钮执行的内容. 事件内容 就是要执行的内容,内容里面可以有变量,变量来自与表单.变量的表达方式仍然用@+变量名来决定,比如:@jiner

php之框架增加日志记录功能类

<?php /* 思路:给定文件,写入读取(fopen ,fwrite……) 如果大于1M 则重写备份 传给一个内容, 判断大小,如果大于1M,备份 小于则写入 */ class Log{ //定义一个常量,创建一个文件的名称 const LOGFILE = 'curr.log'; //写入文件 public static function write($cont){ $cont .="\r\n"; $log = self::isBak(); //计算文件的地址,判断大小 $fh

枚举 用类的方法模拟枚举

package cn.itcast.day1; public class Weekday0 { private Weekday0(){} public static final Weekday0 SUN = new Weekday0(); public static final Weekday0 MON = new Weekday0(); public static final Weekday0 TUS = new Weekday0(); public static final Weekday0