1

我到处寻找,似乎无法弄清楚这一点。我的问题是我正在尝试将“枚举”用于我的数据库中的排名,但不断出现错误。我在下面的内容希望能够根据成员的等级显示在特定的 div 中。这是我到目前为止所拥有的,我哪里出错了?如果有人可以阐明这是否正确或我需要做些什么来完成这项工作,我将不胜感激。

PHP:

class Rank
{
  // If no value is given during object construction this value is used
  const __default = 1;
  // Our enum values
  const Registered       = 1;
  const Legend           = 2;
  const Inactive         = 3;
  const Greenhorn        = 4;
  const FullMember       = 5;
  const JuniorAdmin      = 6;
  const SeniorAdmin      = 7;
  const Leader           = 8;
  const Founder          = 9;
  const OriginalFounder  = 10;
}

$registered     = new Rank(Rank::REGISTERED);
$legend         = new Rank(Rank::LEGEND);
$inactive           = new Rank(Rank::INACTIVE);
$greenhorn          = new Rank(Rank::GREENHORN);
$fullmember     = new Rank(Rank::FULLMEMBER);
$junioradmin        = new Rank(Rank::JUNIORADMIN);
$senioradmin        = new Rank(Rank::SENIORADMIN);
$leader         = new Rank(Rank::LEADER);
$founder            = new Rank(Rank::FOUNDER);
$originalfounder    = new Rank(Rank::ORIGINALFOUNDER);
$fail              = 1;

function responsibilities(Rank $rank)
{
  if (Rank::REGISTERED == $rank) {
    echo "Post something about being a registered member.\n";
  } elseif (Rank::LEGEND == $rank) {
    echo "Post something about being Legend.\n";
  } elseif (Rank::INACTIVE == $rank) {
    echo "Post something about being Inactive./n";
  } elseif (Rank::GREENHORN == $rank) {
    echo "Post something about being a Greenhorn./n";
  } elseif (Rank::FULLMEMBER == $rank) {
    echo "Post something about being a Full Member./n";
  } elseif (Rank::JUNIORADMIN == $rank) {
    echo "Post something about being a Junior Admin./n";
  } elseif (Rank::SENIORADMIN == $rank) {
    echo "Post something about being a Senior Admin./n";
  } elseif (Rank::LEADER == $rank) {
    echo "Post something about being a Leader./n";
  } elseif (Rank::FOUNDER == $rank) {
    echo "Post something about being a Founder./n";
  } elseif (Rank::ORIGINALFOUNDER == $rank) {
    echo "Post something about being an Original Founder./n";
  }
}

responsibilities($registered);
responsibilities($legend);
responsibilities($inactive);
responsibilities($greenhorn);
responsibilities($fullmember);
responsibilities($junioradmin);
responsibilities($senioradmin);
responsibilities($leader);
responsibilities($founder);
responsibilities($originalfounder);

responsibilities($fail);

HTML:

<p><?php echo $rank ?></p>
4

1 回答 1

1

看起来您正在尝试使用SplEnum类来创建枚举。为了拥有这样的枚举,您需要您的枚举类来扩展SplEnum抽象类。

class Fruit extends SplEnum
{
    const __default = self::Apple; // default value; could also be __default = 0;
    // values
    const Apple = 0;
    const Orange = 1;
}

我还没有测试过,但我相当肯定枚举中的常量是区分大小写的。也就是说,如果你Fruit像上面那样定义一个枚举,你可以使用Fruit::Orangebut not Fruit::ORANGE。我认为正常的约定是使用全部大写,因为它们是常量。

于 2013-10-27T19:40:18.343 回答