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
Both pluralize
and singularize()
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
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
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
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
Variable names are often useful when doing meta-programming tasks that involvegenerating code or doing work based on conventions:
- // applePie
- Inflector::variable('apple_pie');
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
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.