Inflector
- class
Cake\Utility\
Inflector
- The Inflector class takes a string and can manipulate it to handle wordvariations such as pluralizations or camelizing and is normally accessedstatically. Example:
Inflector::pluralize('example')
returns “examples”.
You can try out the inflections online at inflector.cakephp.org.
Summary of Inflector Methods and Their Output
Quick summary of the Inflector built-in methods and the results they outputwhen provided a multi-word argument:
Method | Argument | Output |
---|---|---|
pluralize() | BigApple | BigApples |
big_apple | big_apples | |
singularize() | BigApples | BigApple |
big_apples | big_apple | |
camelize() | big_apples | BigApples |
big apple | BigApple | |
underscore() | BigApples | big_apples |
Big Apples | big apples | |
humanize() | big_apples | Big Apples |
bigApple | BigApple | |
classify() | big_apples | BigApple |
big apple | BigApple | |
dasherize() | BigApples | big-apples |
big apple | big apple | |
tableize() | BigApple | big_apples |
Big Apple | big apples | |
variable() | big_apple | bigApple |
big apples | bigApples | |
slug() | Big Apple | big-apple |
BigApples | BigApples |
Creating Plural & Singular Forms
- static
Cake\Utility\Inflector::
singularize
($singular) - static
Cake\Utility\Inflector::
pluralize
($singular) - Both
pluralize
andsingularize()
work on most English nouns. If you needto support other languages, you can use Inflection Configuration tocustomize the rules used:
- // Apples
- echo Inflector::pluralize('Apple');
Note
pluralize()
may not always correctly convert a noun that is already in its plural form.
- // Person
- echo Inflector::singularize('People');
Note
singularize()
may not always correctly convert a noun that is already in its singular form.
Creating CamelCase and under_scored Forms
- static
Cake\Utility\Inflector::
camelize
($underscored) - static
Cake\Utility\Inflector::
underscore
($camelCase) - These methods are useful when creating class names, or property names:
- // ApplePie
- Inflector::camelize('Apple_pie')
- // apple_pie
- Inflector::underscore('ApplePie');
It should be noted that underscore will only convert camelCase formatted words.Words that contains spaces will be lower-cased, but will not contain anunderscore.
Creating Human Readable Forms
- static
Cake\Utility\Inflector::
humanize
($underscored) - This method is useful when converting underscored forms into “Title Case” formsfor human readable values:
- // Apple Pie
- Inflector::humanize('apple_pie');
Creating Table and Class Name Forms
- static
Cake\Utility\Inflector::
classify
($underscored) - static
Cake\Utility\Inflector::
dasherize
($dashed) - static
Cake\Utility\Inflector::
tableize
($camelCase) - When generating code, or using CakePHP’s conventions you may need to inflecttable names or class names:
- // UserProfileSetting
- Inflector::classify('user_profile_settings');
- // user-profile-setting
- Inflector::dasherize('UserProfileSetting');
- // user_profile_settings
- Inflector::tableize('UserProfileSetting');
Creating Variable Names
- static
Cake\Utility\Inflector::
variable
($underscored) - Variable names are often useful when doing meta-programming tasks that involvegenerating code or doing work based on conventions:
- // applePie
- Inflector::variable('apple_pie');
Creating URL Safe Strings
- static
Cake\Utility\Inflector::
slug
($word, $replacement = '-') - Slug converts special characters into latin versions and converting unmatchedcharacters and spaces to dashes. The slug method expects UTF-8 encoding:
- // apple-puree
- Inflector::slug('apple purée');
Note
Inflector::slug()
has been deprecated since 3.2.7. Use Text::slug()
instead.
Inflection Configuration
CakePHP’s naming conventions can be really nice - you can name your databasetable bigboxes
, your model BigBoxes
, your controllerBigBoxesController
, and everything just works together automatically. Theway CakePHP knows how to tie things together is by _inflecting the wordsbetween their singular and plural forms.
There are occasions (especially for our non-English speaking friends) where youmay run into situations where CakePHP’s inflector (the class that pluralizes,singularizes, camelCases, and under_scores) might not work as you’d like. IfCakePHP won’t recognize your Foci or Fish, you can tell CakePHP about yourspecial cases.
Loading Custom Inflections
- static
Cake\Utility\Inflector::
rules
($type, $rules, $reset = false) - Define new inflection and transliteration rules for Inflector to use. Often,this method is used in your config/bootstrap.php:
- Inflector::rules('singular', ['/^(bil)er$/i' => '\1', '/^(inflec|contribu)tors$/i' => '\1ta']);
- Inflector::rules('uninflected', ['singulars']);
- Inflector::rules('irregular', ['phylum' => 'phyla']); // The key is singular form, value is plural form
The supplied rules will be merged into the respective inflection sets defined inCake/Utility/Inflector
, with the added rules taking precedence over the corerules. You can use Inflector::reset()
to clear rules and restore theoriginal Inflector state.