interface IEnum {
public static function who();
}
abstract class Enum {
public $value;
public function __construct($value) {
$this->value = $value;
}
public static function Factory($type) {
if(empty($type)) {
return false;
}
$class = static::who(); // 返回类
if(array_key_exists($type, static::$_enums)) {
return new $class($type); // __toString()
}
return false;
}
public function getValue() {
return $this->value;
}
public static function getValues() {
return array_keys(static::$_enums);
}
public function getString() {
return static::$_enums[$this->value];
}
public function __toString() {
return static::$_enums[$this->value];
}
}
class Fruits extends Enum implements IEnum {
public static $_enums = array(
1 => 'Apple',
2 => 'Orange',
3 => 'Banana'
);
public static function who() {
return __CLASS__;
}
}
$input = 3;
$fruit = Fruits::Factory($input);
echo $fruit->getValue();
echo '<br />';
echo $fruit->getString();
?>
static延迟静态绑定
最新推荐文章于 2023-12-12 00:10:50 发布