厚数åŧãĢおける列挙型ぎ値

列挙型ぎ case は、厚数としãĻčĄ¨įžã•ã‚ŒãĻいるぎで、 ãģとんおぎ厚数åŧãŽä¸­ã§é™įš„ãĒ値としãĻäŊŋえぞす。 ã¤ãžã‚Šã€ãƒ—ãƒ­ãƒ‘ãƒ†ã‚ŖãŽãƒ‡ãƒ•ã‚ŠãƒĢト値や、 static 変数ぎデフりãƒĢãƒˆå€¤ã€ãƒ‘ãƒŠãƒĄãƒŧã‚ŋぎデフりãƒĢト値、 グロãƒŧバãƒĢ厚数やクナ゚厚数ぎ値としãĻäŊŋえぞす。 列挙型ぎ case äģĨ外ぎ値はäŊŋえぞせんが、 通常ぎ厚数は、列挙型ぎ case ã‚’å‚į…§ã§ããžã™ã€‚

しかしãĒがら、列挙型ぎ中で ArrayAccess ぎようãĒ暗éģ™ãŽãƒžã‚¸ãƒƒã‚¯ãƒĄã‚Ŋッドぎå‘ŧãŗå‡ēã—ã‚’čĄŒã†ã“ã¨ã¯ã€ 厚数や static ãĒåŽšįžŠã§ã¯č¨ąã•ã‚Œãžã›ã‚“ã€‚ ãĒぜãĒら、įĩæžœãŽå€¤ãŒäŋč¨ŧできãĒくãĒりぞすし、 副äŊœį”¨ãŒãžãŖãŸããĒいこともäŋč¨ŧできãĒいからです。 é–ĸæ•°ã‚ŗãƒŧãƒĢã‚„ãƒĄã‚Ŋãƒƒãƒ‰ã‚ŗãƒŧãƒĢ、そしãĻãƒ—ãƒ­ãƒ‘ãƒ†ã‚Ŗã¸ãŽã‚ĸクã‚ģ゚は、 åŧ•きįļšãåŽšæ•°åŧã§ã¯ä¸æ­ŖãĒ操äŊœã¨ã—ãĻæ‰ąã‚ã‚Œãžã™ã€‚

<?php

// これは、厌全ãĢæ­Ŗã—ã„åˆ—æŒ™åž‹ãŽåŽšįžŠã§ã™
enum Direction implements ArrayAccess
{
    case Up;
    case Down;

    public function offsetExists($offset): bool
    {
        return false;
    }

    public function offsetGet($offset): mixed
    {
        return null;
    }

    public function offsetSet($offset, $value): void
    {
        throw new Exception();
    }

    public function offsetUnset($offset): void
    {
        throw new Exception();
    }
}

class Foo
{
    // ã“ã‚Œã¯ã€č¨ąã•ã‚ŒãĻいぞす。
    const DOWN = Direction::Down;

    // ã“ã‚Œã¯ã€č¨ąå¯ã•ã‚Œãžã›ã‚“ã€‚įĩæžœãŽå€¤ãŒäŋč¨ŧできãĒい可čƒŊ性がありぞす。
    const UP = Direction::Up['short'];
    // Fatal error: Cannot use [] on enums in constant expression
}

// これは、厌全ãĢæ­Ŗã—ã„ã‚ŗãƒŧドです。厚数åŧã§ã¯ãĒいからです。
$x = Direction::Up['short'];
var_dump("\$x is " . var_export($x, true));

$foo = new Foo();
īŧ‹add a note

User Contributed Notes

There are no user contributed notes for this page.