Skip to content

Instantly share code, notes, and snippets.

@zlikavac32
Created November 13, 2017 11:40
Show Gist options
  • Select an option

  • Save zlikavac32/ef86ef8e0fd9cd2eb6eaf89887eb95ed to your computer and use it in GitHub Desktop.

Select an option

Save zlikavac32/ef86ef8e0fd9cd2eb6eaf89887eb95ed to your computer and use it in GitHub Desktop.
<?php
/**
* @method static WorldSide NORTH
* @method static WorldSide SOUTH
* @method static WorldSide EAST
* @method static WorldSide WEST
*/
abstract class WorldSide extends \Zlikavac32\Enum\Enum
{
protected static function enumerate(): array
{
return [
'NORTH' => new class extends WorldSide {
public function opposite(): WorldSide {
return WorldSide::SOUTH();
}
},
'SOUTH' => new class extends WorldSide {
public function opposite(): WorldSide {
return WorldSide::NORTH();
}
},
'EAST' => new class extends WorldSide {
public function opposite(): WorldSide {
return WorldSide::WEST();
}
},
'WEST' => new class extends WorldSide {
public function opposite(): WorldSide {
return WorldSide::EAST();
}
}
];
}
abstract public function opposite(): WorldSide;
}
foreach (WorldSide::iterator() as $worldSide) {
var_dump(sprintf(
'Opposite of %s is %s',
(string) $worldSide,
(string) $worldSide->opposite()
));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment