### Complex Planet Enum Example Source: https://github.com/dasprid/enum/blob/master/README.md This PHP code defines a Planet enum extending AbstractEnum. It includes constants for planetary mass and radius, a constructor, and methods to retrieve mass, radius, calculate surface gravity, and surface weight. The example also shows how to iterate through enum values and use the calculated properties. ```php use DASPRiD\Enum\AbstractEnum; /** * @method static self MERCURY() * @method static self VENUS() * @method static self EARTH() * @method static self MARS() * @method static self JUPITER() * @method static self SATURN() * @method static self URANUS() * @method static self NEPTUNE() */ final class Planet extends AbstractEnum { protected const MERCURY = [3.303e+23, 2.4397e6]; protected const VENUS = [4.869e+24, 6.0518e6]; protected const EARTH = [5.976e+24, 6.37814e6]; protected const MARS = [6.421e+23, 3.3972e6]; protected const JUPITER = [1.9e+27, 7.1492e7]; protected const SATURN = [5.688e+26, 6.0268e7]; protected const URANUS = [8.686e+25, 2.5559e7]; protected const NEPTUNE = [1.024e+26, 2.4746e7]; /** * Universal gravitational constant. * * @var float */ private const G = 6.67300E-11; /** * Mass in kilograms. * * @var float */ private $mass; /** * Radius in meters. * * @var float */ private $radius; protected function __construct(float $mass, float $radius) { $this->mass = $mass; $this->radius = $radius; } public function mass() : float { return $this->mass; } public function radius() : float { return $this->radius; } public function surfaceGravity() : float { return self::G * $this->mass / ($this->radius * $this->radius); } public function surfaceWeight(float $otherMass) : float { return $otherMass * $this->surfaceGravity(); } } $myMass = 80; foreach (Planet::values() as $planet) { printf("Your weight on %s is %f\n", $planet, $planet->surfaceWeight($myMass)); } ``` -------------------------------- ### Using Enums in PHP Functions Source: https://github.com/dasprid/enum/blob/master/README.md Illustrates how to use the defined 'WeekDay' enum within a PHP function. It shows how to pass enum instances as arguments and use them in switch statements for conditional logic. Enum instances can be compared directly. ```php function tellItLikeItIs(WeekDay $weekDay) { switch ($weekDay) { case WeekDay::MONDAY(): echo 'Mondays are bad.'; break; case WeekDay::FRIDAY(): echo 'Fridays are better.'; break; case WeekDay::SATURDAY(): case WeekDay::SUNDAY(): echo 'Weekends are best.'; break; default: echo 'Midweek days are so-so.'; } } tellItLikeItIs(WeekDay::MONDAY()); tellItLikeItIs(WeekDay::WEDNESDAY()); tellItLikeItIs(WeekDay::FRIDAY()); tellItLikeItIs(WeekDay::SATURDAY()); tellItLikeItIs(WeekDay::SUNDAY()); ``` -------------------------------- ### Define a Basic Enum in PHP Source: https://github.com/dasprid/enum/blob/master/README.md Demonstrates how to define a simple enum class 'WeekDay' extending AbstractEnum. Protected constants are used for enum values, and magic methods are documented for IDE auto-completion. Private or public constants are ignored by the enum. ```php use DASPRiD\Enum\AbstractEnum; /** * @method static self MONDAY() * @method static self TUESDAY() * @method static self WEDNESDAY() * @method static self THURSDAY() * @method static self FRIDAY() * @method static self SATURDAY() * @method static self SUNDAY() */ final class WeekDay extends AbstractEnum { protected const MONDAY = null; protected const TUESDAY = null; protected const WEDNESDAY = null; protected const THURSDAY = null; protected const FRIDAY = null; protected const SATURDAY = null; protected const SUNDAY = null; } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.