Volodymyr Melko
необязательно, если сильно заморочиться, то можно обойтись подтипами
Male extends Gender
Female extends Gender
TransMale extends Gender
TransFemale extends Gender
Ну тут уже вопрос какой инвариант и как он поддерживается. Но в целом, наверное да. Можно просто делать $this->value = const