Class Inflector

Pluralize and singularize English words.

Inflector pluralizes and singularizes English nouns. Used by CakePHP's naming conventions throughout the framework.

Package: Cake\Utility
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

  • $_cache protected static
    array
    Method cache array.
  • $_initialState protected static
    array
    The initial state of Inflector so reset() works.
  • $_plural protected static
    array
    Plural inflector rules
  • $_singular protected static
    array
    Singular inflector rules
  • $_transliteration protected static
    array
    Default map of accented and special characters to ASCII characters
  • $_uninflected protected static
    array
    Words that should not be inflected

Method Summary

  • _cache() protected static
    Cache inflected values, and return if already available
  • camelize() public static
    Returns the given lower_case_and_underscored_word as a CamelCased word.
  • classify() public static
    Returns Cake model class name ("Person" for the database table "people".) for given database table.
  • humanize() public static

    Returns the given underscored_word_group as a Human Readable Word Group. (Underscores are replaced by spaces and capitalized following words.)

  • pluralize() public static
    Return $word in plural form.
  • reset() public static

    Clears Inflectors inflected value caches. And resets the inflection rules to the initial values.

  • rules() public static
    Adds custom inflection $rules, of either 'plural', 'singular' or 'transliteration' $type.
  • singularize() public static
    Return $word in singular form.
  • slug() public static

    Returns a string with all spaces converted to underscores (by default), accented characters converted to non-accented characters, and non word characters removed.

  • tableize() public static
    Returns corresponding table name for given model $className. ("people" for the model class "Person").
  • underscore() public static
    Returns the given camelCasedWord as an underscored_word.
  • variable() public static
    Returns camelBacked version of an underscored string.

Method Detail

_cache()source 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

string
Inflected value, from cache

camelize()source public static

camelize( string $lowerCaseAndUnderscoredWord )

Returns the given lower_case_and_underscored_word as a CamelCased word.

Parameters

string $lowerCaseAndUnderscoredWord
Word to camelize

Returns

string
Camelized word. LikeThis.

Link

http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html#Inflector::camelize

classify()source 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

string
Class name

Link

http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html#Inflector::classify

humanize()source 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

string
Human-readable string

Link

http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html#Inflector::humanize

pluralize()source public static

pluralize( string $word )

Return $word in plural form.

Parameters

string $word
Word in singular

Returns

string
Word in plural

Link

http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html#Inflector::pluralize

reset()source public static

reset( )

Clears Inflectors inflected value caches. And resets the inflection rules to the initial values.

rules()source 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()source public static

singularize( string $word )

Return $word in singular form.

Parameters

string $word
Word in plural

Returns

string
Word in singular

Link

http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html#Inflector::singularize

slug()source 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

string

Link

http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html#Inflector::slug

tableize()source 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

string
Name of the database table for given class

Link

http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html#Inflector::tableize

underscore()source public static

underscore( string $camelCasedWord )

Returns the given camelCasedWord as an underscored_word.

Parameters

string $camelCasedWord
Camel-cased word to be "underscorized"

Returns

string
Underscore-syntaxed version of the $camelCasedWord

Link

http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html#Inflector::underscore

variable()source public static

variable( string $string )

Returns camelBacked version of an underscored string.

Parameters

string $string
String to convert.

Returns

string
in variable form

Link

http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html#Inflector::variable

Properties detail

$_cachesource

protected static array

Method cache array.

array()

$_initialStatesource

protected static array

The initial state of Inflector so reset() works.

array()

$_pluralsource

protected static array

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)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'
    )
)

$_singularsource

protected static array

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',
    )
)

$_transliterationsource

protected static array

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',
)

$_uninflectedsource

protected static array

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'
)

© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/2.8/class-Inflector.html