Вредности наENUM во константни изрази
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Вредности наENUM во константни изрази
Референца за `language.enumerations.expressions.php` со подобрена типографија и навигација.
Вредности наENUM во константни изрази
Because cases are represented as constants on the enum itself, they may be used as static values in most constant expressions: property defaults, static variable defaults, parameter defaults, global and class constant values. They may not be used in other enum case values, but normal constants may refer to an enum case.
Бидејќи случаите се претставени како константи на самата enum, тие можат да се користат како статични вредности во повеќето константни изрази: стандардни вредности на својства, стандардни вредности на статички променливи, стандардни вредности на параметри, глобални и вредности на константи во класа. Тие не можат да се користат во други вредности на enum случаи, но нормалните константи можат да се однесуваат на enum случај. ArrayAccess сепак, имплицитни повици на магични методи како
<?php
// This is an entirely legal Enum definition.
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
{
// This is allowed.
const DOWN = Direction::Down;
// This is disallowed, as it may not be deterministic.
const UP = Direction::Up['short'];
// Fatal error: Cannot use [] on enums in constant expression
}
// This is entirely legal, because it's not a constant expression.
$x = Direction::Up['short'];
var_dump("\$x is " . var_export($x, true));
$foo = new Foo();
?>