阻止派生的SplEnum(Enum)类在PHP

时间:2016-11-26 08:32:22

标签: php

我在PHP中派生SplEnum类使我的类一样行为,但是我发现它的构造函数不是私有的。 我对Enumeration的理解是Enumeration值应该是 fixed 并且应该有预定义的值,所以不应该实例化这个SplEnum类。

我试图通过制作构造函数final并在内部抛出异常来阻止实例化。  这是我的代码片段。

final class UserType extends \SplEnum{

const __default = self::UNKNOWN;

const UNKNOWN = 0;

const STUDENT = 1;
const STARTUP = 2;
const JURY = 3;
const MENTOR = 4;
const ADMIN = 5;
const SUPERADMIN = 6;

// Here's my thought on how the instantiation could be prevented
public final function __construct(){
    throw new Exception('This class is supposed to be Enum, cannot instantiate this class');
}


public static function isValidUserTypeKey($name,$strict = false){}


public static function isValidUserTypeValue($value) {}


}

这是正确的方式还是可以有更好的实现方式?

感谢。

0 个答案:

没有答案