ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ пСрСчислСний

Π’ пСрСчислСния Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ константы с общСдоступной, Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости, хотя Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Π΅ константы эквивалСнтны, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ наслСдованиС Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π΅ пСрСчислСния Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ пСрСчислСния:

<?php

enum Size
{
case
Small;
case
Medium;
case
Large;

public const
Huge = self::Large;
}

var_dump(Size::Huge);
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 1 note

up
17
Hayley Watson ΒΆ
2 years ago
Just to clarify, enum constants *can* contain cases, but they don't *have* to; other constant values are legitimate - including cases of other Enumerations.

<?php
enum Suit
{
    case Hearts;
    case Clubs;
    case Spades;
    case Diamonds;

    public const Card = Size::Large; // A case from a different enum
}

enum Size
{
    case Small;
    case Medium;
    case Large;

    public const Scale = 297/210; // A float
}

echo Suit::Diamonds::Card::Scale; // Getting the constant Scale from the constant Card in a Suit.
?>