Introduction
The Doctrine Inflector has methods for inflecting text. The features include pluralization, singularization, converting between camelCase and under_score and capitalizing words.
Installation
You can install the Inflector with composer:
Usage
Using the inflector is easy, you can create a new Doctrine\Inflector\Inflector instance by using the Doctrine\Inflector\InflectorFactory class:
By default it will create an English inflector. If you want to use another language, just pass the language you want to create an inflector for to the createForLanguage() method:
The supported languages are as follows:
- Language::ENGLISH
- Language::FRENCH
- Language::NORWEGIAN_BOKMAL
- Language::PORTUGUESE
- Language::SPANISH
- Language::TURKISH
If you want to manually construct the inflector instead of using a factory, you can do so like this:
Adding Languages
If you are interested in adding support for your language, take a look at the other languages defined in the Doctrine\Inflector\Rules namespace and the tests located in Doctrine\Tests\Inflector\Rules. You can copy one of the languages and update the rules for your language.
Once you have done this, send a pull request to the doctrine/inflector repository with the additions.
Custom Setup
If you want to setup custom singular and plural rules, you can configure these in the factory:
No operation inflector
The Doctrine\Inflector\NoopWordInflector may be used to configure an inflector that doesn't perform any operation for pluralization and/or singularization. If will simply return the input as output.
This is an implementation of the Null Object design pattern.
Tableize
Converts ModelName to model_name:
Classify
Converts model_name to ModelName:
Camelize
This method uses Classify and then converts the first character to lowercase:
Capitalize
Takes a string and capitalizes all of the words, like PHP's built-in ucwords function. This extends that behavior, however, by allowing the word delimiters to be configured, rather than only separating on whitespace.
Here is an example:
Pluralize
Returns a word in plural form.
Singularize
Returns a word in singular form.
Urlize
Generate a URL friendly string from a string of text:
Unaccent
You can unaccent a string of text using the unaccent() method:
Legacy API
The API present in Inflector 1.x is still available, but will be deprecated in a future release and dropped for 3.0. Support for languages other than English is available in the 2.0 API only.
Acknowledgements
The language rules in this library have been adapted from several different sources, including but not limited to: