A PHP library for collecting genders and pronouns for people.
Gins (Gender is not sex) is a PHP library that provides you with a host of options for genders and pronouns for your users and customers. Too often I arrive at a site with the form field "Gender" and only "Male/Female" as options. We don't live in that world any more. So this attempts to help developers fix that., (*2)
This is by no means comprehensive but hopefully people will help expand it over time and its a marked improvement on the binary way of thinking., (*3)
We provide a comprehensive list of genders to select from., (*4)
$genders = new Gins\Genders(); echo "<select name='gender'>"; foreach ($genders as $gender) { echo "<option value='" . $gender->getValue() . "'>"; echo $gender->getTerm(); echo "</option>"; } echo "</select>";
Genders will also allow you to pass in a value, and get its term., (*5)
$genders = new Gins\Genders(); try { $gender = $genders->findOrFailByValue("m"); print $gender->getTerm(); // "Male" } catch (GenderNotRegistered $e) { print "We couldn't find that gender" }
or pass a term and get a value., (*6)
$genders = new Gins\Genders(); try { $gender = $genders->findOrFailByTerm("Male"); print $gender->getValue(); // "m" } catch (GenderNotRegistered $e) { print "We're sorry but we don't have your gender listed, but we've logged its term and will get it added soon."; }
Some genders will presume a pronoun to save on inputs if you wish but its normally best to ask people how they like to be identified so you should use these assumptions with caution., (*7)
$pronoun = $gender->getPronoun(); print $pronoun->getNoun(); // "He"
You may set the pronoun to any valid pronoun object., (*8)
$gender->setPronoun($noun);
This is a list of accepted or used pronouns and their derivations. There are 5 standard derivations of pronouns in English. Subject "He/She", Object "Him/Her", Possessive "His/Her", Possessive Pronoun (Plural) "His/Hers", Reflexive "Himself/Herself", (*9)
$pronouns = new Gins\Pronouns(); foreach ($pronouns as $noun) { print $pro->getNoun(); # He/She print $noun->getSubject(); # He/She print $noun->getObject(); # Him/Her print $noun->getPossessive(); # His/Her print $noun->getPossessivePlural(); # His/Hers print $noun->getReflexive(); #Himself/Herself }
$noun = new Gins\Pronouns\He();
Adding Genders and pronouns is as easy to building new classes which extend the base classes Gender
or Pronoun
if you'd like to add genders of pronouns you can start a pull request with your own and I'll merge them in., (*10)
Once you've added your own genders and pronouns you can pass them into gins either at constrct or by using the add mehtods., (*11)
$custom_gender = new My\Custom\Gender(); $custom_gender_two = new My\Custom\GenderTwo(); $custom_pronoun = new My\Custom\Pronoun(); $genders->addGender($custom_gender); $genders->addGender($custom_gender_two); $all_genders = new Gins\Genders([$custom_gender, $custom_gender_two]); # Another way to do it, $pronouns->addNoun($custom_pronoun); $all_pronouns = new Gins\Pronouns([$custom_pronoun]); # Another way to do it.
Whilst we allow you to patch in your own genders, we'd really love it if you can make a pull request with any missing genders instead., (*12)
composer require waxim/gins
phpunit