📜  PHP的枚举

📅  最后修改于: 2022-05-13 01:54:11.051000             🧑  作者: Mango

PHP的枚举

枚举(或枚举)主要用于为整型常量分配名称,这些名称使程序易于阅读和维护。在PHP,枚举数据类型可以使用和扩展抽象类来实现。

方法一:使用简单的抽象类对数据成员封装。

例子:

 1, 'b' => 2);
}
  
$a = gfg::dummy_string;
$b = gfg::dummy_int;
$c = gfg::dummy_array;
  
var_dump($a);
var_dump($b);
var_dump($c);
  
?>
输出:
string(13) "geeksforgeeks"
int(1)
array(2) {
  ["a"]=>
  int(1)
  ["b"]=>
  int(2)
}

方法二:扩展一个抽象类作为枚举容器来封装常量。



例子:

value = $value;
    }
  
    // String representation
    final public function __toString() {
        return $this->value;
    }
}
  
// Encapsulating enumerated constants
class gfg extends enum {
    const dummy_string = "geeksforgeeks";
    const dummy_int    = 1;
    const dummy_array  = array('a' => 1, 'b' => 2);
}
  
$a = new gfg(gfg::dummy_string);
$b = new gfg(gfg::dummy_int);
$c = new gfg(gfg::dummy_array);
  
var_dump($a);
var_dump($b);
var_dump($c);
  
?>
输出:
object(gfg)#1 (1) {
  ["value"]=>
  string(13) "geeksforgeeks"
}
object(gfg)#2 (1) {
  ["value"]=>
  int(1)
}
object(gfg)#3 (1) {
  ["value"]=>
  array(2) {
    ["a"]=>
    int(1)
    ["b"]=>
    int(2)
  }
}

方法3:前面方法中提到的枚举可以通过添加有效性检查和异常处理来专门化,以便更灵活地使用枚举数据类型。

例子:

getConstants())) {
                try {
                    throw new 
                    Exception("IllegalArgumentException");
                }
                catch (Exception $k) {
                    echo $k->getMessage();
                }
            }
            $this->value = $value;
        }
        catch (Exception $k){
            echo $k->getMessage();
        }
    }
  
    // String representation
    final public function __toString() {
        return $this->value;
    }
}
  
// Encapsulating enumerated constants
class gfg extends enum {
    const dummy_string = "geeksforgeeks";
    const dummy_int    = 1;
    const dummy_array  = array('a' => 1, 'b' => 2);
}
  
$a = new gfg(gfg::dummy_string);
$b = new gfg(gfg::dummy_int);
$c = new gfg(gfg::dummy_array);
$d = new gfg(3.14);
  
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
?>
输出:
IllegalArgumentExceptionobject(gfg)#1 (1) {
  ["value"]=>
  string(13) "geeksforgeeks"
}
object(gfg)#2 (1) {
  ["value"]=>
  int(1)
}
object(gfg)#3 (1) {
  ["value"]=>
  array(2) {
    ["a"]=>
    int(1)
    ["b"]=>
    int(2)
  }
}
object(gfg)#4 (1) {
  ["value"]=>
  float(3.14)
}

注意: PHP具有可用于枚举的 SplEnum 类,尽管该实现并非在所有稳定版本的PHP中都可用。