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

列挙型ぎ 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.