2013-10-27 1 views
0

Я искал всюду и, похоже, не понял этого. Моя проблема в том, что я пытаюсь использовать «enum» для ранжирования, который находится в моей базе данных, но продолжает получать ошибки. То, что у меня ниже, я хотел бы показывать в отдельном div в зависимости от того, какой ранг является членом. Это то, что я до сих пор, где я ошибаюсь? Если кто-то может пролить свет, если это даже правильно или что мне нужно сделать, чтобы сделать эту работу, я бы очень признателен.PHP и Enum Troubles

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> 
+0

И waht - это ошибка, которую вы получили? –

+0

Он продолжает бросать мне ошибки на определенных строках в моем php. Прямо сейчас он находится в строке42 ... – user2732875

+0

Неопределенная константа класса 'REGISTERED' – user2732875

ответ

1

Похоже, что вы пытаетесь использовать SplEnum класс, чтобы сделать перечисление. Чтобы иметь такое перечисление, вам понадобится класс enum для расширения абстрактного класса 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::Orange, но не Fruit::ORANGE. Я считаю, что обычным соглашением является использование всех UPPERCASE, поскольку они являются константами.