BaseInflector
in package
BaseInflector provides concrete implementation for [[Inflector]].
Do not use BaseInflector. Use [[Inflector]] instead.
Tags
Table of Contents
Constants
- TRANSLITERATE_LOOSE = 'Any-Latin; Latin-ASCII; [\u0080-\uffff] remove'
- Shortcut for `Any-Latin; Latin-ASCII; [\u0080-\uffff] remove` transliteration rule.
- TRANSLITERATE_MEDIUM = 'Any-Latin; Latin-ASCII'
- Shortcut for `Any-Latin; Latin-ASCII` transliteration rule.
- TRANSLITERATE_STRICT = 'Any-Latin; NFKD'
- Shortcut for `Any-Latin; NFKD` transliteration rule.
Properties
- $plurals : array<string|int, mixed>
- $singulars : array<string|int, mixed>
- $specials : array<string|int, mixed>
- $transliteration : array<string|int, mixed>
- $transliterator : mixed
Methods
- camel2id() : string
- Converts a CamelCase name into an ID in lowercase.
- camel2words() : string
- Converts a CamelCase name into space-separated words.
- camelize() : string
- Returns given word as CamelCased.
- classify() : string
- Converts a table name to its class name.
- humanize() : string
- Returns a human-readable string from $word.
- id2camel() : string
- Converts an ID into a CamelCase name.
- ordinalize() : string
- Converts number to its ordinal English form. For example, converts 13 to 13th, 2 to 2nd .
- pluralize() : string
- Converts a word to its plural form.
- sentence() : string
- Converts a list of words into a sentence.
- singularize() : string
- Returns the singular of the $word.
- slug() : string
- Returns a string with all spaces converted to given replacement, non word characters removed and the rest of characters transliterated.
- tableize() : string
- Converts a class name to its table name (pluralized) naming conventions.
- titleize() : string
- Converts an underscored or CamelCase word into a English sentence.
- transliterate() : string
- Returns transliterated version of a string.
- underscore() : string
- Converts any "CamelCased" into an "underscored_word".
- variablize() : string
- Same as camelize but first char is in lowercase.
- hasIntl() : bool
- encoding() : string
Constants
TRANSLITERATE_LOOSE
Shortcut for `Any-Latin; Latin-ASCII; [\u0080-\uffff] remove` transliteration rule.
public
mixed
TRANSLITERATE_LOOSE
= 'Any-Latin; Latin-ASCII; [\u0080-\uffff] remove'
The rule is loose,
letters will be transliterated with the characters of Basic Latin Unicode Block.
For example:
获取到 どちら Українська: ґ,є, Српска: ђ, њ, џ! ¿Español?
will be transliterated to
huo qu dao dochira Ukrainska: g,e, Srpska: d, n, d! Espanol?
.
Used in [[transliterate()]]. For detailed information see unicode normalization forms
Tags
TRANSLITERATE_MEDIUM
Shortcut for `Any-Latin; Latin-ASCII` transliteration rule.
public
mixed
TRANSLITERATE_MEDIUM
= 'Any-Latin; Latin-ASCII'
The rule is medium, letters will be
transliterated to characters of Latin-1 (ISO 8859-1) ASCII table. For example:
获取到 どちら Українська: ґ,є, Српска: ђ, њ, џ! ¿Español?
will be transliterated to
huo qu dao dochira Ukrainsʹka: g,e, Srpska: d, n, d! ¿Espanol?
.
Used in [[transliterate()]]. For detailed information see unicode normalization forms
Tags
TRANSLITERATE_STRICT
Shortcut for `Any-Latin; NFKD` transliteration rule.
public
mixed
TRANSLITERATE_STRICT
= 'Any-Latin; NFKD'
The rule is strict, letters will be transliterated with
the closest sound-representation chars. The result may contain any UTF-8 chars. For example:
获取到 どちら Українська: ґ,є, Српска: ђ, њ, џ! ¿Español?
will be transliterated to
huò qǔ dào dochira Ukraí̈nsʹka: g̀,ê, Srpska: đ, n̂, d̂! ¿Español?
.
Used in [[transliterate()]]. For detailed information see unicode normalization forms
Tags
Properties
$plurals
public
static array<string|int, mixed>
$plurals
= ['/([nrlm]ese|deer|fish|sheep|measles|ois|pox|media)$/i' => '\1', '/^(sea[- ]bass)$/i' => '\1', '/(m)ove$/i' => '\1oves', '/(f)oot$/i' => '\1eet', '/(h)uman$/i' => '\1umans', '/(s)tatus$/i' => '\1tatuses', '/(s)taff$/i' => '\1taff', '/(t)ooth$/i' => '\1eeth', '/(quiz)$/i' => '\1zes', '/^(ox)$/i' => '\1\2en', '/([m|l])ouse$/i' => '\1ice', '/(matr|vert|ind)(ix|ex)$/i' => '\1ices', '/(x|ch|ss|sh)$/i' => '\1es', '/([^aeiouy]|qu)y$/i' => '\1ies', '/(hive)$/i' => '\1s', '/(?:([^f])fe|([lr])f)$/i' => '\1\2ves', '/sis$/i' => 'ses', '/([ti])um$/i' => '\1a', '/(p)erson$/i' => '\1eople', '/(m)an$/i' => '\1en', '/(c)hild$/i' => '\1hildren', '/(buffal|tomat|potat|ech|her|vet)o$/i' => '\1oes', '/(alumn|bacill|cact|foc|fung|nucle|radi|stimul|syllab|termin|vir)us$/i' => '\1i', '/us$/i' => 'uses', '/(alias)$/i' => '\1es', '/(ax|cris|test)is$/i' => '\1es', '/(currenc)y$/' => '\1ies', '/s$/' => 's', '/^$/' => '', '/$/' => 's']
the rules for converting a word into its plural form. The keys are the regular expressions and the values are the corresponding replacements.
$singulars
public
static array<string|int, mixed>
$singulars
= ['/([nrlm]ese|deer|fish|sheep|measles|ois|pox|media|ss)$/i' => '\1', '/^(sea[- ]bass)$/i' => '\1', '/(s)tatuses$/i' => '\1tatus', '/(f)eet$/i' => '\1oot', '/(t)eeth$/i' => '\1ooth', '/^(.*)(menu)s$/i' => '\1\2', '/(quiz)zes$/i' => '\1', '/(matr)ices$/i' => '\1ix', '/(vert|ind)ices$/i' => '\1ex', '/^(ox)en/i' => '\1', '/(alias)(es)*$/i' => '\1', '/(alumn|bacill|cact|foc|fung|nucle|radi|stimul|syllab|termin|viri?)i$/i' => '\1us', '/([ftw]ax)es/i' => '\1', '/(cris|ax|test)es$/i' => '\1is', '/(shoe|slave)s$/i' => '\1', '/(o)es$/i' => '\1', '/ouses$/' => 'ouse', '/([^a])uses$/' => '\1us', '/([m|l])ice$/i' => '\1ouse', '/(x|ch|ss|sh)es$/i' => '\1', '/(m)ovies$/i' => '\1\2ovie', '/(s)eries$/i' => '\1\2eries', '/([^aeiouy]|qu)ies$/i' => '\1y', '/([lr])ves$/i' => '\1f', '/(tive)s$/i' => '\1', '/(hive)s$/i' => '\1', '/(drive)s$/i' => '\1', '/([^fo])ves$/i' => '\1fe', '/(^analy)ses$/i' => '\1sis', '/(analy|diagno|^ba|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i' => '\1\2sis', '/([ti])a$/i' => '\1um', '/(p)eople$/i' => '\1\2erson', '/(m)en$/i' => '\1an', '/(c)hildren$/i' => '\1\2hild', '/(n)ews$/i' => '\1\2ews', '/(n)etherlands$/i' => '\1\2etherlands', '/eaus$/' => 'eau', '/(currenc)ies$/' => '\1y', '/^(.*us)$/' => '\1', '/s$/i' => '']
the rules for converting a word into its singular form. The keys are the regular expressions and the values are the corresponding replacements.
$specials
public
static array<string|int, mixed>
$specials
= ['atlas' => 'atlases', 'beef' => 'beefs', 'brother' => 'brothers', 'cafe' => 'cafes', 'child' => 'children', 'cookie' => 'cookies', 'corpus' => 'corpuses', 'cow' => 'cows', 'curve' => 'curves', 'foe' => 'foes', 'ganglion' => 'ganglions', 'genie' => 'genies', 'genus' => 'genera', 'graffito' => 'graffiti', 'hoof' => 'hoofs', 'loaf' => 'loaves', 'man' => 'men', 'money' => 'monies', 'mongoose' => 'mongooses', 'move' => 'moves', 'mythos' => 'mythoi', 'niche' => 'niches', 'numen' => 'numina', 'occiput' => 'occiputs', 'octopus' => 'octopuses', 'opus' => 'opuses', 'ox' => 'oxen', 'pasta' => 'pasta', 'penis' => 'penises', 'sex' => 'sexes', 'soliloquy' => 'soliloquies', 'testis' => 'testes', 'trilby' => 'trilbys', 'turf' => 'turfs', 'wave' => 'waves', 'Amoyese' => 'Amoyese', 'bison' => 'bison', 'Borghese' => 'Borghese', 'bream' => 'bream', 'breeches' => 'breeches', 'britches' => 'britches', 'buffalo' => 'buffalo', 'cantus' => 'cantus', 'carp' => 'carp', 'chassis' => 'chassis', 'clippers' => 'clippers', 'cod' => 'cod', 'coitus' => 'coitus', 'Congoese' => 'Congoese', 'contretemps' => 'contretemps', 'corps' => 'corps', 'debris' => 'debris', 'diabetes' => 'diabetes', 'djinn' => 'djinn', 'eland' => 'eland', 'elk' => 'elk', 'equipment' => 'equipment', 'Faroese' => 'Faroese', 'flounder' => 'flounder', 'Foochowese' => 'Foochowese', 'gallows' => 'gallows', 'Genevese' => 'Genevese', 'Genoese' => 'Genoese', 'Gilbertese' => 'Gilbertese', 'graffiti' => 'graffiti', 'headquarters' => 'headquarters', 'herpes' => 'herpes', 'hijinks' => 'hijinks', 'Hottentotese' => 'Hottentotese', 'information' => 'information', 'innings' => 'innings', 'jackanapes' => 'jackanapes', 'Kiplingese' => 'Kiplingese', 'Kongoese' => 'Kongoese', 'Lucchese' => 'Lucchese', 'mackerel' => 'mackerel', 'Maltese' => 'Maltese', 'mews' => 'mews', 'moose' => 'moose', 'mumps' => 'mumps', 'Nankingese' => 'Nankingese', 'news' => 'news', 'nexus' => 'nexus', 'Niasese' => 'Niasese', 'Pekingese' => 'Pekingese', 'Piedmontese' => 'Piedmontese', 'pincers' => 'pincers', 'Pistoiese' => 'Pistoiese', 'pliers' => 'pliers', 'Portuguese' => 'Portuguese', 'proceedings' => 'proceedings', 'rabies' => 'rabies', 'rice' => 'rice', 'rhinoceros' => 'rhinoceros', 'salmon' => 'salmon', 'Sarawakese' => 'Sarawakese', 'scissors' => 'scissors', 'series' => 'series', 'Shavese' => 'Shavese', 'shears' => 'shears', 'siemens' => 'siemens', 'species' => 'species', 'swine' => 'swine', 'testes' => 'testes', 'trousers' => 'trousers', 'trout' => 'trout', 'tuna' => 'tuna', 'Vermontese' => 'Vermontese', 'Wenchowese' => 'Wenchowese', 'whiting' => 'whiting', 'wildebeest' => 'wildebeest', 'Yengeese' => 'Yengeese', 'software' => 'software', 'hardware' => 'hardware']
the special rules for converting a word between its plural form and singular form. The keys are the special words in singular form, and the values are the corresponding plural form.
$transliteration
public
static array<string|int, mixed>
$transliteration
= ['À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'AE', 'Ç' => 'C', 'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ð' => 'D', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ő' => 'O', 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ű' => 'U', 'Ý' => 'Y', 'Þ' => 'TH', 'ß' => 'ss', 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'ae', 'ç' => 'c', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'd', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ő' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ű' => 'u', 'ý' => 'y', 'þ' => 'th', 'ÿ' => 'y']
fallback map for transliteration used by [[transliterate()]] when intl isn't available.
$transliterator
public
static mixed
$transliterator
= self::TRANSLITERATE_LOOSE
Either a [[\Transliterator]], or a string from which a [[\Transliterator]] can be built for transliteration. Used by [[transliterate()]] when intl is available. Defaults to [[TRANSLITERATE_LOOSE]]
Tags
Methods
camel2id()
Converts a CamelCase name into an ID in lowercase.
public
static camel2id(string $name[, string $separator = '-' ][, bool|string $strict = false ]) : string
Words in the ID may be concatenated using the specified character (defaults to '-'). For example, 'PostTag' will be converted to 'post-tag'.
Parameters
- $name : string
-
the string to be converted
- $separator : string = '-'
-
the character used to concatenate the words in the ID
- $strict : bool|string = false
-
whether to insert a separator between two consecutive uppercase chars, defaults to false
Return values
string —the resulting ID
camel2words()
Converts a CamelCase name into space-separated words.
public
static camel2words(string $name[, bool $ucwords = true ]) : string
For example, 'PostTag' will be converted to 'Post Tag'.
Parameters
- $name : string
-
the string to be converted
- $ucwords : bool = true
-
whether to capitalize the first letter in each word
Return values
string —the resulting words
camelize()
Returns given word as CamelCased.
public
static camelize(string $word) : string
Converts a word like "send_email" to "SendEmail". It will remove non alphanumeric character from the word, so "who's online" will be converted to "WhoSOnline".
Parameters
- $word : string
-
the word to CamelCase
Tags
Return values
stringclassify()
Converts a table name to its class name.
public
static classify(string $tableName) : string
For example, converts "people" to "Person".
Parameters
- $tableName : string
Return values
stringhumanize()
Returns a human-readable string from $word.
public
static humanize(string $word[, bool $ucAll = false ]) : string
Parameters
- $word : string
-
the string to humanize
- $ucAll : bool = false
-
whether to set all words to uppercase or not
Return values
stringid2camel()
Converts an ID into a CamelCase name.
public
static id2camel(string $id[, string $separator = '-' ]) : string
Words in the ID separated by $separator
(defaults to '-') will be concatenated into a CamelCase name.
For example, 'post-tag' is converted to 'PostTag'.
Parameters
- $id : string
-
the ID to be converted
- $separator : string = '-'
-
the character used to separate the words in the ID
Return values
string —the resulting CamelCase name
ordinalize()
Converts number to its ordinal English form. For example, converts 13 to 13th, 2 to 2nd .
public
static ordinalize(int $number) : string
..
Parameters
- $number : int
-
the number to get its ordinal value
Return values
stringpluralize()
Converts a word to its plural form.
public
static pluralize(string $word) : string
Note that this is for English only! For example, 'apple' will become 'apples', and 'child' will become 'children'.
Parameters
- $word : string
-
the word to be pluralized
Return values
string —the pluralized word
sentence()
Converts a list of words into a sentence.
public
static sentence(array<string|int, mixed> $words[, string|null $twoWordsConnector = null ][, string|null $lastWordConnector = null ][, string $connector = ', ' ]) : string
Special treatment is done for the last few words. For example,
$words = ['Spain', 'France'];
echo Inflector::sentence($words);
// output: Spain and France
$words = ['Spain', 'France', 'Italy'];
echo Inflector::sentence($words);
// output: Spain, France and Italy
$words = ['Spain', 'France', 'Italy'];
echo Inflector::sentence($words, ' & ');
// output: Spain, France & Italy
Parameters
- $words : array<string|int, mixed>
-
the words to be converted into an string
- $twoWordsConnector : string|null = null
-
the string connecting words when there are only two
- $lastWordConnector : string|null = null
-
the string connecting the last two words. If this is null, it will take the value of
$twoWordsConnector
. - $connector : string = ', '
-
the string connecting words other than those connected by $lastWordConnector and $twoWordsConnector
Tags
Return values
string —the generated sentence
singularize()
Returns the singular of the $word.
public
static singularize(string $word) : string
Parameters
- $word : string
-
the english word to singularize
Return values
string —Singular noun.
slug()
Returns a string with all spaces converted to given replacement, non word characters removed and the rest of characters transliterated.
public
static slug(string $string[, string $replacement = '-' ][, bool $lowercase = true ]) : string
If intl extension isn't available uses fallback that converts latin characters only and removes the rest. You may customize characters map via $transliteration property of the helper.
Parameters
- $string : string
-
An arbitrary string to convert
- $replacement : string = '-'
-
The replacement to use for spaces
- $lowercase : bool = true
-
whether to return the string in lowercase or not. Defaults to
true
.
Return values
string —The converted string.
tableize()
Converts a class name to its table name (pluralized) naming conventions.
public
static tableize(string $className) : string
For example, converts "Person" to "people".
Parameters
- $className : string
-
the class name for getting related table_name
Return values
stringtitleize()
Converts an underscored or CamelCase word into a English sentence.
public
static titleize(string $words[, bool $ucAll = false ]) : string
Parameters
- $words : string
- $ucAll : bool = false
-
whether to set all words to uppercase
Return values
stringtransliterate()
Returns transliterated version of a string.
public
static transliterate(string $string[, string|Transliterator|null $transliterator = null ]) : string
If intl extension isn't available uses fallback that converts latin characters only and removes the rest. You may customize characters map via $transliteration property of the helper.
Parameters
- $string : string
-
input string
- $transliterator : string|Transliterator|null = null
-
either a [[\Transliterator]] or a string from which a [[\Transliterator]] can be built.
Tags
Return values
stringunderscore()
Converts any "CamelCased" into an "underscored_word".
public
static underscore(string $words) : string
Parameters
- $words : string
-
the word(s) to underscore
Return values
stringvariablize()
Same as camelize but first char is in lowercase.
public
static variablize(string $word) : string
Converts a word like "send_email" to "sendEmail". It will remove non alphanumeric character from the word, so "who's online" will be converted to "whoSOnline".
Parameters
- $word : string
-
to lowerCamelCase
Return values
stringhasIntl()
protected
static hasIntl() : bool
Return values
bool —if intl extension is loaded
encoding()
private
static encoding() : string