Class Inflector
Pluralize and singularize English words.
Inflector pluralizes and singularizes English nouns. Used by CakePHP's naming conventions throughout the framework.
Link: http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html
Copyright: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
License: MIT License
Location: Cake/Utility/Inflector.php
Properties summary
- 
			$_cacheprotected staticarrayMethod cache array.
- 
			$_initialStateprotected staticarrayThe initial state of Inflector so reset() works.
- 
			$_pluralprotected staticarrayPlural inflector rules
- 
			$_singularprotected staticarraySingular inflector rules
- 
			$_transliterationprotected staticarrayDefault map of accented and special characters to ASCII characters
- 
			$_uninflectedprotected staticarrayWords that should not be inflected
Method Summary
- 
			_cache() protected staticCache inflected values, and return if already available
- 
			camelize() public staticReturns the given lower_case_and_underscored_word as a CamelCased word.
- 
			classify() public staticReturns Cake model class name ("Person" for the database table "people".) for given database table.
- 
			humanize() public staticReturns the given underscored_word_group as a Human Readable Word Group. (Underscores are replaced by spaces and capitalized following words.) 
- 
			pluralize() public staticReturn $word in plural form.
- 
			reset() public staticClears Inflectors inflected value caches. And resets the inflection rules to the initial values. 
- 
			rules() public staticAdds custom inflection $rules, of either 'plural', 'singular' or 'transliteration' $type.
- 
			singularize() public staticReturn $word in singular form.
- 
			slug() public staticReturns a string with all spaces converted to underscores (by default), accented characters converted to non-accented characters, and non word characters removed. 
- 
			tableize() public staticReturns corresponding table name for given model $className. ("people" for the model class "Person").
- 
			underscore() public staticReturns the given camelCasedWord as an underscored_word.
- 
			variable() public staticReturns camelBacked version of an underscored string.
Method Detail
_cache() protected static ¶
_cache( string $type , string $key , string $value = false )
Cache inflected values, and return if already available
Parameters
- string $type
- Inflection type
- string $key
- Original value
- string $value optional false
- Inflected value
Returns
Inflected value, from cache
camelize() public static ¶
camelize( string $lowerCaseAndUnderscoredWord )
Returns the given lower_case_and_underscored_word as a CamelCased word.
Parameters
- string $lowerCaseAndUnderscoredWord
- Word to camelize
Returns
Camelized word. LikeThis.
Link
classify() public static ¶
classify( string $tableName )
Returns Cake model class name ("Person" for the database table "people".) for given database table.
Parameters
- string $tableName
- Name of database table to get class name for
Returns
Class name
Link
humanize() public static ¶
humanize( string $lowerCaseAndUnderscoredWord )
Returns the given underscored_word_group as a Human Readable Word Group. (Underscores are replaced by spaces and capitalized following words.)
Parameters
- string $lowerCaseAndUnderscoredWord
- String to be made more readable
Returns
Human-readable string
Link
pluralize() public static ¶
pluralize( string $word )
Return $word in plural form.
Parameters
- string $word
- Word in singular
Returns
Word in plural
Link
reset() public static ¶
reset( )
Clears Inflectors inflected value caches. And resets the inflection rules to the initial values.
rules() public static ¶
rules( string $type , array $rules , boolean $reset = false )
Adds custom inflection $rules, of either 'plural', 'singular' or 'transliteration' $type.
Usage:
Inflector::rules('plural', array('/^(inflect)or$/i' => '\1ables')); Inflector::rules('plural', array( 'rules' => array('/^(inflect)ors$/i' => '\1ables'), 'uninflected' => array('dontinflectme'), 'irregular' => array('red' => 'redlings') )); Inflector::rules('transliteration', array('/å/' => 'aa'));
Parameters
- string $type
- The type of inflection, either 'plural', 'singular' or 'transliteration'
- array $rules
- Array of rules to be added.
- boolean $reset optional false
- If true, will unset default inflections for all new rules that are being defined in $rules. 
singularize() public static ¶
singularize( string $word )
Return $word in singular form.
Parameters
- string $word
- Word in plural
Returns
Word in singular
Link
slug() public static ¶
slug( string $string , string $replacement = '_' )
Returns a string with all spaces converted to underscores (by default), accented characters converted to non-accented characters, and non word characters removed.
Parameters
- string $string
- the string you want to slug
- string $replacement optional '_'
- will replace keys in map
Returns
Link
tableize() public static ¶
tableize( string $className )
Returns corresponding table name for given model $className. ("people" for the model class "Person").
Parameters
- string $className
- Name of class to get database table name for
Returns
Name of the database table for given class
Link
underscore() public static ¶
underscore( string $camelCasedWord )
Returns the given camelCasedWord as an underscored_word.
Parameters
- string $camelCasedWord
- Camel-cased word to be "underscorized"
Returns
Underscore-syntaxed version of the $camelCasedWord
Link
variable() public static ¶
variable( string $string )
Returns camelBacked version of an underscored string.
Parameters
- string $string
- String to convert.
Returns
in variable form
Link
Properties detail
$_plural ¶
Plural inflector rules
array( 'rules' => array( '/(s)tatus$/i' => '\1tatuses', '/(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|([lre])f)$/i' => '\1\2ves', '/sis$/i' => 'ses', '/([ti])um$/i' => '\1a', '/(p)erson$/i' => '\1eople', '/(?<!u)(m)an$/i' => '\1en', '/(c)hild$/i' => '\1hildren', '/(buffal|tomat)o$/i' => '\1\2oes', '/(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', '/s$/' => 's', '/^$/' => '', '/$/' => 's', ), 'uninflected' => array( '.*[nrlm]ese', '.*data', '.*deer', '.*fish', '.*measles', '.*ois', '.*pox', '.*sheep', 'people', 'feedback', 'stadia' ), 'irregular' => array( 'atlas' => 'atlases', 'beef' => 'beefs', 'brief' => 'briefs', 'brother' => 'brothers', 'cafe' => 'cafes', 'child' => 'children', 'cookie' => 'cookies', 'corpus' => 'corpuses', 'cow' => 'cows', 'criterion' => 'criteria', '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', 'penis' => 'penises', 'person' => 'people', 'sex' => 'sexes', 'soliloquy' => 'soliloquies', 'testis' => 'testes', 'trilby' => 'trilbys', 'turf' => 'turfs', 'potato' => 'potatoes', 'hero' => 'heroes', 'tooth' => 'teeth', 'goose' => 'geese', 'foot' => 'feet', 'sieve' => 'sieves' ) )
$_singular ¶
Singular inflector rules
array( 'rules' => array( '/(s)tatuses$/i' => '\1\2tatus', '/^(.*)(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)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', '/(tive)s$/i' => '\1', '/(hive)s$/i' => '\1', '/(drive)s$/i' => '\1', '/([le])ves$/i' => '\1f', '/([^rfoa])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', '/eaus$/' => 'eau', '/^(.*us)$/' => '\\1', '/s$/i' => '' ), 'uninflected' => array( '.*data', '.*[nrlm]ese', '.*deer', '.*fish', '.*measles', '.*ois', '.*pox', '.*sheep', '.*ss', 'feedback' ), 'irregular' => array( 'foes' => 'foe', ) )
$_transliteration ¶
Default map of accented and special characters to ASCII characters
array( '/À|Á|Â|Ã|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A', '/Æ|Ǽ/' => 'AE', '/Ä/' => 'Ae', '/Ç|Ć|Ĉ|Ċ|Č/' => 'C', '/Ð|Ď|Đ/' => 'D', '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E', '/Ĝ|Ğ|Ġ|Ģ|Ґ/' => 'G', '/Ĥ|Ħ/' => 'H', '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ|І/' => 'I', '/IJ/' => 'IJ', '/Ĵ/' => 'J', '/Ķ/' => 'K', '/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L', '/Ñ|Ń|Ņ|Ň/' => 'N', '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O', '/Œ/' => 'OE', '/Ö/' => 'Oe', '/Ŕ|Ŗ|Ř/' => 'R', '/Ś|Ŝ|Ş|Ș|Š/' => 'S', '/ẞ/' => 'SS', '/Ţ|Ț|Ť|Ŧ/' => 'T', '/Þ/' => 'TH', '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U', '/Ü/' => 'Ue', '/Ŵ/' => 'W', '/Ý|Ÿ|Ŷ/' => 'Y', '/Є/' => 'Ye', '/Ї/' => 'Yi', '/Ź|Ż|Ž/' => 'Z', '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a', '/ä|æ|ǽ/' => 'ae', '/ç|ć|ĉ|ċ|č/' => 'c', '/ð|ď|đ/' => 'd', '/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e', '/ƒ/' => 'f', '/ĝ|ğ|ġ|ģ|ґ/' => 'g', '/ĥ|ħ/' => 'h', '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı|і/' => 'i', '/ij/' => 'ij', '/ĵ/' => 'j', '/ķ/' => 'k', '/ĺ|ļ|ľ|ŀ|ł/' => 'l', '/ñ|ń|ņ|ň|ʼn/' => 'n', '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o', '/ö|œ/' => 'oe', '/ŕ|ŗ|ř/' => 'r', '/ś|ŝ|ş|ș|š|ſ/' => 's', '/ß/' => 'ss', '/ţ|ț|ť|ŧ/' => 't', '/þ/' => 'th', '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u', '/ü/' => 'ue', '/ŵ/' => 'w', '/ý|ÿ|ŷ/' => 'y', '/є/' => 'ye', '/ї/' => 'yi', '/ź|ż|ž/' => 'z', )
$_uninflected ¶
Words that should not be inflected
array( 'Amoyese', 'bison', 'Borghese', 'bream', 'breeches', 'britches', 'buffalo', 'cantus', 'carp', 'chassis', 'clippers', 'cod', 'coitus', 'Congoese', 'contretemps', 'corps', 'debris', 'diabetes', 'djinn', 'eland', 'elk', 'equipment', 'Faroese', 'flounder', 'Foochowese', 'gallows', 'Genevese', 'Genoese', 'Gilbertese', 'graffiti', 'headquarters', 'herpes', 'hijinks', 'Hottentotese', 'information', 'innings', 'jackanapes', 'Kiplingese', 'Kongoese', 'Lucchese', 'mackerel', 'Maltese', '.*?media', 'mews', 'moose', 'mumps', 'Nankingese', 'news', 'nexus', 'Niasese', 'Pekingese', 'Piedmontese', 'pincers', 'Pistoiese', 'pliers', 'Portuguese', 'proceedings', 'rabies', 'research', 'rice', 'rhinoceros', 'salmon', 'Sarawakese', 'scissors', 'sea[- ]bass', 'series', 'Shavese', 'shears', 'siemens', 'species', 'swine', 'testes', 'trousers', 'trout', 'tuna', 'Vermontese', 'Wenchowese', 'whiting', 'wildebeest', 'Yengeese' )
