亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP中Enum(枚舉)用法實例詳解

2024-05-04 23:40:45
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP中Enum(枚舉)用法,結合實例形式較為詳細的分析了php中Enum(枚舉)的實現與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
 

本文實例講述了PHP中Enum(枚舉)用法。分享給大家供大家參考,具體如下:

PHP其實有Enum類庫的,需要安裝perl擴展,所以不是php的標準擴展,因此代碼的實現需要運行的php環境支持。

(1)擴展類庫SplEnum類。該類的摘要如下:

SplEnum extends SplType {/* Constants */const NULL __default = null ;/* 方法 */public array getConstList ([ bool $include_default = false ] )/* 繼承的方法 */SplType::__construct ([ mixed $initial_value [, bool $strict ]] )}

使用示例:

<?phpclass Month extends SplEnum {  const __default = self::January;  const January = 1;  const February = 2;  const March = 3;  const April = 4;  const May = 5;  const June = 6;  const July = 7;  const August = 8;  const September = 9;  const October = 10;  const November = 11;  const December = 12;}echo new Month(Month::June) . PHP_EOL;try {  new Month(13);} catch (UnexpectedValueException $uve) {  echo $uve->getMessage() . PHP_EOL;}?>

輸出結果:

6Value not a const in enum Month

(2)自定義的Enum類庫

<?php/** * Abstract class that enables creation of PHP enums. All you * have to do is extend this class and define some constants. * Enum is an object with value from on of those constants * (or from on of superclass if any). There is also * __default constat that enables you creation of object * without passing enum value. * * @author Marijan Šuflaj <msufflaj32@gmail.com> * @link http://php4every1.com */abstract class Enum {  /**   * Constant with default value for creating enum object   */  const __default = null;  private $value;  private $strict;  private static $constants = array();  /**   * Returns list of all defined constants in enum class.   * Constants value are enum values.   *   * @param bool $includeDefault If true, default value is included into return   * @return array Array with constant values   */  public function getConstList($includeDefault = false) {    $class = get_class($this);    if (!array_key_exists($class, self::$constants)) {      self::populateConstants();    }    return $includeDefault ? array_merge(self::$constants[__CLASS_], array(      "__default" => self::__default    )) : self::$constants[__CLASS_];  }  /**   * Creates new enum object. If child class overrides __construct(),   * it is required to call parent::__construct() in order for this   * class to work as expected.   *   * @param mixed $initialValue Any value that is exists in defined constants   * @param bool $strict If set to true, type and value must be equal   * @throws UnexpectedValueException If value is not valid enum value   */  public function __construct($initialValue = null, $strict = true) {    $class = get_class($this);    if (!array_key_exists($class, self::$constants)) {      self::populateConstants();    }    if ($initialValue === null) {      $initialValue = self::$constants[$class]["__default"];    }    $temp = self::$constants[$class];    if (!in_array($initialValue, $temp, $strict)) {      throw new UnexpectedValueException("Value is not in enum " . $class);    }    $this->value = $initialValue;    $this->strict = $strict;  }  private function populateConstants() {    $class = get_class($this);    $r = new ReflectionClass($class);    $constants = $r->getConstants();    self::$constants = array(      $class => $constants    );  }  /**   * Returns string representation of an enum. Defaults to   * value casted to string.   *   * @return string String representation of this enum's value   */  public function __toString() {    return (string) $this->value;  }  /**   * Checks if two enums are equal. Only value is checked, not class type also.   * If enum was created with $strict = true, then strict comparison applies   * here also.   *   * @return bool True if enums are equal   */  public function equals($object) {    if (!($object instanceof Enum)) {      return false;    }    return $this->strict ? ($this->value === $object->value)      : ($this->value == $object->value);  }}

使用示例如下:

class MyEnum extends Enum {  const HI = "Hi";  const BY = "By";  const NUMBER = 1;  const __default = self::BY;}var_dump(new MyEnum(MyEnum::HI));var_dump(new MyEnum(MyEnum::BY));//Use __defaultvar_dump(new MyEnum());try {  new MyEnum("I don't exist");} catch (UnexpectedValueException $e) {  var_dump($e->getMessage());}

輸出結果如下:

object(MyEnum)#1 (2) { ["value":"Enum":private]=> string(2) "Hi" ["strict":"Enum":private]=> bool(true)}object(MyEnum)#1 (2) { ["value":"Enum":private]=> string(2) "By" ["strict":"Enum":private]=> bool(true)}object(MyEnum)#1 (2) { ["value":"Enum":private]=> string(2) "By" ["strict":"Enum":private]=> bool(true)}string(27) "Value is not in enum MyEnum"

希望本文所述對大家PHP程序設計有所幫助。



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品中文| 91在线观看免费高清| 亚洲欧洲高清在线| 在线中文字幕日韩| 午夜精品久久久久久久99黑人| 国产精品白丝jk喷水视频一区| 在线电影欧美日韩一区二区私密| 26uuu另类亚洲欧美日本老年| 久久婷婷国产麻豆91天堂| 97视频免费在线看| 中文字幕无线精品亚洲乱码一区| 国产成人综合精品在线| 97在线精品国自产拍中文| 国产日韩欧美中文| 欧美猛少妇色xxxxx| 亚洲国产精彩中文乱码av在线播放| 欧美色videos| 日韩精品中文在线观看| 国产精品高潮呻吟久久av野狼| 亚洲伊人第一页| 欧洲成人免费视频| 欧美性xxxxx极品| 日韩精品中文字幕有码专区| 成人在线视频网| 一本色道久久综合亚洲精品小说| 揄拍成人国产精品视频| 日韩日本欧美亚洲| 日韩欧美极品在线观看| 一区二区三区四区视频| 少妇精69xxtheporn| 久久综合电影一区| 日韩欧美中文免费| 欧美超级免费视 在线| 国语自产精品视频在线看一大j8| 在线亚洲国产精品网| 97色在线观看免费视频| 成人黄色免费网站在线观看| 亚洲精品国产精品国自产在线| 国产精品一区二区3区| 久久久久亚洲精品成人网小说| 色樱桃影院亚洲精品影院| 亚洲精品www久久久久久广东| 欧美激情一区二区三级高清视频| 日韩成人av在线| 欧美韩国理论所午夜片917电影| 欧美激情在线有限公司| 久久最新资源网| 91精品国产91久久久| 亚洲国产精品国自产拍av秋霞| 精品久久久久久久久久| 日韩在线视频一区| 国产啪精品视频网站| 国产一区av在线| 国模精品视频一区二区| 国产成人在线一区二区| 色777狠狠综合秋免鲁丝| 黄色成人av网| 亚洲人成在线观看网站高清| 国产日韩欧美91| 日本久久久久久| 国产91精品久久久久久久| 亚洲国产精品人人爽夜夜爽| 九九热最新视频//这里只有精品| 色悠久久久久综合先锋影音下载| 福利二区91精品bt7086| 精品国内亚洲在观看18黄| 欧美一区深夜视频| 国产一区二中文字幕在线看| 国产精品91免费在线| 色青青草原桃花久久综合| 欧美精品第一页在线播放| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美巨猛xxxx猛交黑人97人| 国产精品99蜜臀久久不卡二区| 亚洲香蕉在线观看| 国产经典一区二区| 国产在线高清精品| 日本精品视频在线| 欧美三级免费观看| 日韩精品免费视频| 欧美猛男性生活免费| 久久午夜a级毛片| 日韩视频免费中文字幕| 曰本色欧美视频在线| 一道本无吗dⅴd在线播放一区| 国产日韩欧美中文在线播放| 欧美在线播放视频| 91精品中国老女人| 国产欧美日韩综合精品| 亚洲黄色av网站| 亚洲欧美日韩国产中文专区| 97在线视频一区| 国产精品av网站| 91免费人成网站在线观看18| 欧美一区二区大胆人体摄影专业网站| 97视频免费在线看| 丝袜一区二区三区| 91欧美精品午夜性色福利在线| 91系列在线播放| 欧美激情在线狂野欧美精品| 91av视频在线| 69国产精品成人在线播放| 亚洲成人精品在线| 久久精品国产v日韩v亚洲| 国产视频精品一区二区三区| 亚洲大尺度美女在线| 成人激情视频在线播放| 欧美日在线观看| 热re91久久精品国99热蜜臀| 91久久国产综合久久91精品网站| 欧美另类xxx| 欧美亚洲激情在线| 国产手机视频精品| 欧美激情第99页| 亚洲aⅴ男人的天堂在线观看| 亚洲人高潮女人毛茸茸| 一区二区三区视频在线| 一本色道久久88综合亚洲精品ⅰ| 自拍视频国产精品| 亚洲综合国产精品| 国产97在线视频| 国语自产精品视频在线看抢先版图片| 中文字幕亚洲一区二区三区| 亚洲香蕉成人av网站在线观看| 一区二区三区视频观看| 欧美日韩一区二区在线| 日韩中文字幕在线免费观看| 欧美在线视频网站| 国产精品99久久99久久久二8| 少妇久久久久久| 中文字幕日韩专区| 国外成人在线播放| 国产精品美女www| 国产精品ⅴa在线观看h| 欧美高清视频在线| 成人乱人伦精品视频在线观看| 亚洲欧洲在线视频| 精品一区二区三区四区| 国产精品美女免费视频| 欧美电影免费看| 久久av中文字幕| 3344国产精品免费看| 精品久久久久久电影| 亚洲国产99精品国自产| 日韩av在线高清| 精品magnet| 日韩激情视频在线播放| 91精品国产91久久久久久| 久99九色视频在线观看| 国产91对白在线播放| 日韩中文字幕在线看| 高清日韩电视剧大全免费播放在线观看| 久久久国产精品视频| 国产精品69久久久久| 亚洲日韩欧美视频| 欧美电影免费观看网站| 日韩视频免费中文字幕| 日韩专区中文字幕| 欧美日韩国产第一页| 欧美日韩国产丝袜美女| 中文字幕国产精品| 亚洲精品视频免费| 国产日韩欧美在线视频观看| 国产日韩在线精品av|