English spoken conference

You are browsing the Symfony 5.0 documentation, which changes significantly from Symfony 3.x. If your app doesn't use Symfony 5.0 yet, browse the Symfony 3.4 documentation.

The Inflector Component

5.0 version

The Inflector Component

The Inflector component converts English words between their singular and plural forms.

Installation

1
$ composer require symfony/inflector

Note

If you install this component outside of a Symfony application, you must require the vendor/autoload.php file in your code to enable the class autoloading mechanism provided by Composer. Read this article for more details.

When you May Need an Inflector

In some scenarios such as code generation and code introspection, it's usually required to convert words from/to singular/plural. For example, if you need to know which property is associated with an adder method, you must convert from plural to singular (addStories() method -> $story property).

Although most human languages define simple pluralization rules, they also define lots of exceptions. For example, the general rule in English is to add an s at the end of the word (book -> books) but there are lots of exceptions even for common words (woman -> women, life -> lives, news -> news, radius -> radii, etc.)

This component abstracts all those pluralization rules so you can convert from/to singular/plural with confidence. However, due to the complexity of the human languages, this component only provides support for the English language.

Usage

The Inflector component provides two static methods to convert from/to singular/plural:

1
2
3
4
5
6
7
8
9
use Symfony\Component\Inflector\Inflector;

Inflector::singularize('alumni');   // 'alumnus'
Inflector::singularize('knives');   // 'knife'
Inflector::singularize('mice');     // 'mouse'

Inflector::pluralize('grandchild'); // 'grandchildren'
Inflector::pluralize('news');       // 'news'
Inflector::pluralize('bacterium');  // 'bacteria'

Sometimes it's not possible to determine a unique singular/plural form for the given word. In those cases, the methods return an array with all the possible forms:

1
2
3
4
5
6
7
use Symfony\Component\Inflector\Inflector;

Inflector::singularize('indices'); // ['index', 'indix', 'indice']
Inflector::singularize('leaves');  // ['leaf', 'leave', 'leaff']

Inflector::pluralize('matrix');    // ['matricies', 'matrixes']
Inflector::pluralize('person');    // ['persons', 'people']

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.